Я пытаюсь загрузить RewriteRule
в файл .htaccess
, чтобы перенаправить example.com/page на example.com/page.php (или добавить .php
в любой запрошенный файл, который не имеет . расширениеhtaccess RewriteRule завершается с ошибкой, если страница не найдена
Я пробовал:
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
из "Spoofing" a 404 not found error with .htaccess
Я попытался это без каких-либо других RewriteRule
с в моей .htaccess, но это еще только решает страницы 404 ошибки с помощью ErrorDocument
. Все остальные правила, которые я пытаюсь использовать, также полностью пропадают, если запрошенная страница не найдена. Любое правило, которое я указываю, работает, если запрашиваемый URL-адрес разрешает существующую страницу или каталог.
У меня есть сервер для хостинга Linux, доступный для Godaddy. Я уверен, что не могу редактировать файл httpd.conf.
Мне интересно, может ли кто-нибудь сказать мне, почему мои RewriteRule
s игнорируются, когда исходный запрос не является файлом или каталогом - когда он не существует.
Благодарим за помощь.
EDIT:
теперь я вижу, что если я пойду в mysite.com/index.php RewriteRule работы. Если я перейду в mysite.com/index, RewriteRule не работает. Если я перейду на страницу, которая вообще не существует - mysite.com/asdfasdfsadf, то мой RewriteRule будет работать. Таким образом, он только терпит неудачу в версии без продолжения существующего url.
Тот же результат. Если я перейду на mysite.com/index.php, он загрузится, но если я перейду в mysite.com/index, тогда он скажет мне: «Запрошенный URL/индекс не найден на этом сервере». – Jakar
Не уверен, что все, что я сделал. Я уже несколько часов возился с моим .htaccess. Но я закончил добавление 'Options -MultiViews' над' RewriteEngine On'. Я также добавил 'RewriteBase /'. Это решает мою проблему. Спасибо. – Jakar