Удалите расширения .php с помощью .htaccess, не нарушая DirectoryIndex - PullRequest
10 голосов
/ 09 марта 2012

В моем файле .htaccess есть следующая перезапись, которая удаляет расширение .php из файлов, например, so.com / question.php в so.com / question .

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Однако это также нарушает стандартное поведение DirectoryIndex, при котором простой ввод каталога перенаправляет на индексный файл в папке, например, so.com / answer отображает so.com / answer / index.php

Простое объединение приведенного выше кода с DirectoryIndex index.php не дает обоих результатов.

Может кто-нибудь помочь мне объединить эти две функции, илипереписать код для исключения файлов index.php, что приведет к тому же результату?

Ответы [ 3 ]

25 голосов
/ 09 марта 2012

Я думаю, вам нужно просто проверить, существует ли файл перед выполнением перезаписи, таким образом, вы оставите нетронутыми поведение 404 и indexinx:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

(не проверено)

2 голосов
/ 09 марта 2012
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]

проверить файлы и папки, а также добавить RewriteBase /

1 голос
/ 19 января 2019
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Я проверял, и он работает нормально.

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