Простое переписывание.htaccess для удаления расширения файла не работает - выдает ошибку 404, не найденную

Я пишу на своем новом RaspberryPi. Я пытался использовать.htaccess, чтобы удалить.php из файла с именем "greet".

Я установил apache2: "sudo apt-get установить apache2
Включил модуль перезаписи с помощью: "sudo a2enmod rewrite"
Я также изменил разрешение на переопределение стандартных конфигов сайта.

Я знаю, что мой модуль перезаписи работает, потому что я попробовал следующее:

RewriteEngine On
RewriteRule ^greet.html$ greet.php

который успешно перенаправляет 192.168.0.123/greet.html в 192.168.0.123/greet.php.

Однако следующий код для удаления расширения.php, похоже, не работает для меня:

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

Когда я набираю http://192.168.0.123/greet в своем браузере, я не получаю файл greet.php. Вместо этого я попадаю на страницу 404 Not Found.

2 ответа

Почему вы не используете мультивьюны для этого? Если у вас нет много сложных правил переписывания, вы можете просто заставить mod_negotiation обработать эти расширения для вас. Просто нужно включить

Options +Multiviews

Вы можете попробовать свое правило таким образом.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [NC,L] 
Другие вопросы по тегам