.htaccess - redireccionar - Reescriba la URL después de redirigir el error 404 htaccess
redireccionar htaccess wordpress (4)
Así que sé que esto puede parecer un poco extraño, pero en aras de la coherencia, me gustaría que todas mis direcciones URL aparezcan en esta forma: http://domain.com/page/ Hasta ahora he conseguido que las páginas regulares funcionen, pero no puedo parece que las páginas de error funcionan correctamente.
Si el usuario visita una página o directorio que no existe, me gustaría redireccionar el navegador a: http://domain.com/404/ . Sin embargo, este directorio no existirá. La ubicación real de la página de error estará en /pages/errors/404.php
Además, aunque no necesito una respuesta exacta para todos los diversos errores (400, 401, 403, 404, 500), aplicaré cualquier método que se dé para redirigirlos a sus URL "apropiadas" (por ejemplo, http://domain.com/400/ http://domain.com/500/ etc.)
¿Algunas ideas?
En su archivo .htaccess, si usa apache, puede intentar con
Regla para la página de error - 404ErrorDocument 404 http://www.domain.com/notFound.html
Intente agregar esta regla a la parte superior de su htaccess:
RewriteEngine On
RewriteRule ^404/?$ /pages/errors/404.php [L]
Luego debajo de eso (o cualquier otra regla que tenga):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ http://domain.com/404/ [L,R]
Pon este código en tu archivo .htaccess
RewriteEngine On
ErrorDocument 404 /404.php
donde 404.php es el nombre del archivo y se coloca en la raíz. Puedes poner el camino completo aquí.
Prueba esto en tu .htaccess:
.htaccess
ErrorDocument 404 http://example.com/404/
ErrorDocument 500 http://example.com/500/
# or map them to one error document:
# ErrorDocument 404 /pages/errors/error_redirect.php
# ErrorDocument 500 /pages/errors/error_redirect.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /pages/errors/404.php [L]
RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /pages/errors/500.php [L]
# or map them to one error document:
#RewriteCond %{REQUEST_URI} ^/404/$ [OR]
#RewriteCond %{REQUEST_URI} ^/500/$
#RewriteRule ^(.*)$ /pages/errors/error_redirect.php [L]
El ErrorDocument
redirige todos los 404 a una URL específica, todos los 500 a otra url (reemplazar con su dominio).
Las reglas Rewrite mapean esa URL a su secuencia de comandos actual 404.php. Las expresiones regulares RewriteCond se pueden hacer más genéricas si lo desea, pero creo que debe definir explícitamente todos los códigos ErrorDocument que quiera anular.
Redirección local:
Cambie .htaccess ErrorDocument a un archivo que exista (debe existir, o obtendrá un error):
ErrorDocument 404 /pages/errors/404_redirect.php
404_redirect.php
<?php
header(''Location: /404/'');
exit;
?>
Redirección basada en el número de error
Parece que deberá especificar una línea ErrorDocument
en .htaccess para cada error que desee redirigir (consulte: Apache ErrorDocument y Apache Custom Error ). El ejemplo .htaccess anterior tiene múltiples ejemplos. Puede usar lo siguiente como la secuencia de comandos genérica de redireccionamiento para reemplazar 404_redirect.php anterior.
error_redirect.php
<?php
$error_url = $_SERVER["REDIRECT_STATUS"] . ''/'';
$error_path = $error_url . ''.php'';
if ( ! file_exists($error_path)) {
// this is the default error if a specific error page is not found
$error_url = ''404/'';
}
header(''Location: '' . $error_url);
exit;
?>