Reescriba la URL después de redirigir el error 404 htaccess

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?

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

  

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

  

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í.

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] 

En su archivo .htaccess, si usa apache, puede intentar con

Regla para la página de error – 404

ErrorDocument 404 http://www.domain.com/notFound.html