2012-02-08 4 views
3

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

Однако я также хочу использовать ErrorDocument 404 /index.php для перенаправления любых несуществующих URL-адресов на главную страницу. Если я использую только ErrorDocument 404 /index.php в htaccess, перенаправления работают нормально. Кроме того, если я использую приведенный ниже код Rewrite, он успешно удаляет расширения 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] 

ответ

4

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

ErrorDocument 404 /index.php 

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

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

+2

Это ключевое слово '% {REQUEST_FILENAME} .php -f', а не'% {REQUEST_FILENAME} -f'. +1 – anubhava

+0

Удивительный! Спасибо, Джон и анубхава. Я htaccess newb, так что просто собирал условия поиска во время поиска. Теперь я имею в виду, что это указано, но так и не получилось бы там самостоятельно! Еще раз спасибо! – user1195985

Смежные вопросы