проблемы htaccess с несуществующими файлами в несуществующих каталогах

проблемы htaccess с несуществующими файлами в несуществующих каталогах

Я использую следующий .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

Любая помощь будет высоко оценена.

решение1

FallbackResourceприводит к URL-адресувнутренне переписанов другой файл. Однако я бы подумал, чтовнешнее перенаправлениебудет предпочтительнее в этой ситуации? Кроме того, FallbackResourceможет конфликтовать с вашими существующими директивами mod_rewrite. (Однако было бы полезно увидеть ваше использование FallbackResourcein-place, так как это мог быть ваш синтаксис, который был ошибкой?)

Попробуйте что-то вроде следующего после последней директивы 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(что потребовало бы дальнейшего переписывания).

Связанный контент