.htaccess Удалить имя файла из URL - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь удалить: "site.php" из моих URL-адресов: "example.com/custom-foldername/site.php", поэтому url: s будет выглядеть как "example.com/custom-foldername"

В настоящее время это не работает вообще. В основном мой сайт просто не меняет URL. Я знаю, что файл .htaccess читается, потому что, если я напишу в нем ненужный код, он выдаст ошибку 500.

Вот мой текущий .htaccess код

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Options -Indexes
RewriteRule ^site\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /site.php [L]
</IfModule>

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

ОБНОВЛЕНИЕ: я решил это сам недавно, но забыл обновить

Итак, я нашел решение и вот мой текущий файл .htaccess, если у кого-то когда-либо возникла такая же проблема

RewriteEngine On
RewriteBase /
Options -Indexes
DirectoryIndex site.php site.html

Когда пользователь «запрашивает» каталог папки (example.com/cats), apache ищет в нем файлы «site.php или site.html». (example.com/cats/site.php) Если он обнаруживает одну из них, он отображает ее пользователю как (example.com/cats). Если какой-либо файл не найден, он выдает «404 not found error»

0 голосов
/ 05 ноября 2018

Код, который вы разместили, представляет собой шаблон фронт-контроллера - он переписывает каждый запрос несуществующих файлов в /site.php в корне документа (не /custom-foldername/site.php).

И шаблон RewriteRule наподобие ^site\.php$ не будет соответствовать запросу типа /custom-foldername, если файл .htaccess находится в корне документа.

Я пытаюсь удалить site.php из моих URL-адресов ...

Из всех ваших URL? site.php присутствует в всех ваших URL? Итак, site.php ваш фронт-контроллер ?

Если site.php действительно ваш фронт-контроллер, попробуйте что-то вроде следующего:

Options -Indexes

RewriteEngine On
RewriteBase /custom-foldername

RewriteRule site\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ site.php [L]

Переписывает все, что не отображается в физический файл или каталог, в /custom-foldername/site.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...