htaccess ErrorDocument 404 конфликтует с RewriteEngine вкл - PullRequest
4 голосов
/ 08 февраля 2012

Я использую ниже в моем htaccess файле, чтобы удалить расширения .php в моих файлах.Он отлично работает.

Однако я также хочу использовать ErrorDocument 404 /index.php для перенаправления любых несуществующих URL-адресов обратно на домашнюю страницу.Если я использую ErrorDocument 404 /index.php один в htaccess, перенаправления работают нормально.Также, если я использую приведенный ниже код перезаписи, он успешно удаляет расширения php.Однако я хотел бы, чтобы оба они работали вместе.

Например, если пользователь вводит "www.domain.com/register", он переходит на www.domain.com/register.php.Но если они вводят "www.domain.com/something", а something.php не существует, то они перенаправляются обратно на index.php.Я попробовал каждую перестановку обоих вместе в моем htaccess безрезультатно.Любая помощь будет оценена.

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L]

1 Ответ

5 голосов
/ 08 февраля 2012

Не уверен, в чем конкретно заключается ваша проблема, но если я изменю ваши правила на это, это сработает для меня:

ErrorDocument 404 /index.php

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

Таким образом, вместо проверки того, что запрос не обращается к реальному файлу / каталогу, который существует, проверьте, что .php-версия этого файла СУЩЕСТВУЕТ.

...