htaccess problemas com arquivos inexistentes em diretórios inexistentes [duplicados]

1

Estou usando o seguinte arquivo .htaccess , que funciona bem, no entanto, também desejo encaminhar qualquer tentativa de acessar arquivos inexistentes no diretório raiz e em qualquer subdiretório (independentemente de o subdiretório existir ou não). o nome do domínio principal.

Eu tentei FallbackResource , mas isso resultou em 500 erros de série.

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.

    
por Sherif 11.09.2018 / 01:31

1 resposta

0

FallbackResource faz com que o URL seja reescrito internamente para outro arquivo. No entanto, eu teria pensado que um redirecionamento externo seria preferível nessa situação? Além disso, FallbackResource pode entrar em conflito com suas diretivas mod_rewrite existentes. (No entanto, seria útil ver o seu uso de FallbackResource no local, como poderia ter sido a sua sintaxe que estava em falta?)

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

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

O texto acima diz ... se a solicitação não for mapeada para um arquivo e não for mapeada para um diretório, redirecione para a raiz do documento (temporária 302). O QSD é necessário para remover qualquer string de consulta da solicitação.

Além de: Isso não é recomendado de um ponto de vista de SEO (ou 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 ...), o documento especificado na diretiva ErrorDocument deve ser um caminho do sistema de arquivos relativo à raiz . por exemplo. /redirect.php (Mas isso na verdade não redireciona faz?) Provavelmente você não tem realmente um arquivo chamado /redirect (que precisaria de mais reescrita).

    
por 11.09.2018 / 02:01