problemas de htaccess com arquivos inexistentes em diretórios inexistentes

problemas de htaccess com arquivos inexistentes em diretórios inexistentes

Estou usando o .htaccessarquivo a seguir, que funciona bem, no entanto, também quero encaminhar quaisquer tentativas de acessar arquivos inexistentes no diretório raiz e em qualquer subdiretório (se o subdiretório existe ou não) de volta para o nome de domínio principal.

Eu tentei FallbackResource, mas isso resultou em erros da série 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

Qualquer ajuda seria muito apreciada.

Responder1

FallbackResourceresulta no URL sendoreescrito internamentepara outro arquivo. No entanto, eu teria pensado que umredirecionamento externoseria preferível nesta situação? Além disso, FallbackResourcepode entrar em conflito com suas diretivas mod_rewrite existentes. (No entanto, teria sido útil ver o uso do FallbackResourcein-place, pois poderia ter sido a sua sintaxe a culpada?)

Tente algo como o seguinte, após sua última diretiva mod_rewrite (antes de suas ErrorDocumentdiretivas):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [QSD,R=302,L]

O texto acima diz... se a solicitação não mapear para um arquivo e não mapear para um diretório, redirecione para a raiz do documento (temporário 302). É QSDnecessário remover qualquer string de consulta da solicitação.

Aparte:Isso não é recomendado do ponto de vista de SEO (ou dos usuários), se isso for uma preocupação.


ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

(Além de definir desnecessariamente o documento de erro 500 mais de uma vez...) odocumentoespecificado na ErrorDocumentdiretiva deve ser relativo à raizsistema de arquivocaminho. por exemplo. /redirect.php(Mas isso na verdade nãoredirecionarnão é?) Presumivelmente, você não tem um arquivo chamado /redirect(isso exigiria reescrita adicional).

informação relacionada