Problemas de htaccess con archivos inexistentes en directorios inexistentes

Problemas de htaccess con archivos inexistentes en directorios inexistentes

Estoy usando el siguiente .htaccessarchivo, que funciona bien; sin embargo, también quiero reenviar cualquier intento de acceder a archivos inexistentes en el directorio raíz y en cualquier subdirectorio (ya sea que el subdirectorio exista o no) al nombre de dominio principal.

Lo intenté FallbackResourcepero resultó en errores de la serie 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

Cualquier ayuda sería muy apreciada.

Respuesta1

FallbackResourceda como resultado que la URL seareescrito internamentea otro archivo. Sin embargo, habría pensado que unaredireccionamiento externo¿Sería preferible en esta situación? Además, FallbackResourcepodría entrar en conflicto con sus directivas mod_rewrite existentes. (Sin embargo, hubiera sido útil ver su uso de FallbackResourcein situ, ya que podría haber sido su sintaxis la que tuvo la culpa).

Pruebe algo como lo siguiente, después de su última directiva mod_rewrite (antes de sus ErrorDocumentdirectivas):

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

Lo anterior dice... si la solicitud no se asigna a un archivo y no se asigna a un directorio, entonces se redirige a la raíz del documento (302 temporal). Es QSDnecesario para eliminar cualquier cadena de consulta de la solicitud.

Aparte:Esto no se recomienda desde el punto de vista de SEO (o de los usuarios), si eso es una preocupación.


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

(Aparte de definir innecesariamente el documento de error 500 más de una vez...)documentoespecificado en la ErrorDocumentdirectiva debe ser relativo a la raízsistema de archivoscamino. p.ej. /redirect.php(Pero eso en realidad no significaredirigir¿Lo hace?) Es de suponer que en realidad no tiene un archivo llamado /redirect(eso requeriría una mayor reescritura).

información relacionada