Я использую следующие .htaccess
файл, который работает хорошо, однако я хочу также перенаправить любые попытки доступа к несуществующим файлам в корневом каталоге и в любом подкаталоге (независимо от того, существует подкаталог или нет) обратно к основному имени домена.
Я попытался FallbackResource
но это привело к 500 ошибкам серии.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://xxxxxxxxx.xxxxx/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|png|css|pdf)$ - [F]
# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect
Любая помощь будет принята с благодарностью.
FallbackResource
приводит к тому, что URL-адрес внутренне переписанный в другой файл. Однако я бы подумал, что внешнее перенаправление было бы предпочтительнее в этой ситуации? Также, FallbackResource
может конфликтовать с вашими существующими директивами mod_rewrite. (Однако было бы полезно увидеть, как вы используете FallbackResource
на месте, так как может быть виноват ваш синтаксис?)
Попробуйте сделать что-то вроде следующего после вашей последней директивы mod_rewrite (перед вашей ErrorDocument
директивы):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [QSD,R=302,L]
Выше сказано ... если запрос не сопоставляется с файлом и не сопоставляется с каталогом, перенаправьте его в корень документа (временный 302). В QSD
требуется для удаления из запроса любой строки запроса.
В стороне: Это не рекомендуется с точки зрения SEO (или пользователей), если это вызывает беспокойство.
ErrorDocument 500 /redirect ErrorDocument 500 /redirect ErrorDocument 500 /redirect ErrorDocument 404 /error ErrorDocument 401 /redirect ErrorDocument 403 /redirect
(Помимо излишнего определения документа с ошибкой 500 более одного раза ...) документ указано в ErrorDocument
директива должна быть относительной файловая система дорожка. например. /redirect.php
(Но на самом деле это не так перенаправить не так ли?) Предположительно у вас на самом деле нет файла с именем /redirect
(это потребовало бы дальнейшей перезаписи).