Estoy usando el siguiente .htaccess
archivo, 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é FallbackResource
pero 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
FallbackResource
da 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, FallbackResource
podría entrar en conflicto con sus directivas mod_rewrite existentes. (Sin embargo, hubiera sido útil ver su uso de FallbackResource
in 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 ErrorDocument
directivas):
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 QSD
necesario 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 ErrorDocument
directiva 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).