Я пытаюсь использовать RewriteRule
в моем файле .htaccess
, чтобы перенаправить example.com/page на example.com/page.php (или добавить .php
к любому запрошенному файлу, который не имеет расширения .
Я пытался:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [R] #I also tried ^(.+)$ with no effect
из «Спуфинг» ошибка 404 не найдена с .htaccess
Я пробовал это без других RewriteRule
в моем .htaccess, но он все равно просто разрешает страницу ошибки 404 через ErrorDocument
. Все остальные правила, которые я пытаюсь использовать, также полностью пропускаются, если запрашиваемая страница не найдена. Любое указанное мной правило работает, если запрошенный URL-адрес преобразуется в существующую страницу или каталог.
У меня есть хостинг-сервер Godaddy для Linux. Я почти уверен, что не могу отредактировать свой файл httpd.conf.
Мне интересно, может ли кто-нибудь сказать мне, почему мои RewriteRule
игнорируются, когда исходный запрос не является файлом или каталогом - когда он не существует.
Спасибо за любую помощь.
EDIT
Теперь я вижу, что если я захожу на mysite.com/index.php, RewriteRule работает. Если я захожу на mysite.com/index RewriteRule не работает. Если я перехожу на страницу, которая вообще не существует - mysite.com/asdfasdfsadf, тогда мой RewriteRule работает. Таким образом, он завершается ошибкой только в версии без расширения существующего URL.