template personalizar pagina not found error descargar bootstrap apache .htaccess mod-rewrite http-status-code-404 http-status-code-403

apache - personalizar - pagina de error bootstrap



Problema al redirigir 403 Prohibido a 404 no encontrado (7)

La parte pertinente de mi .htaccess se ve así:

Options -Indexes <FilesMatch include> Order allow,deny Deny from all </FilesMatch> RedirectMatch 404 ^/include(/.*)$

Y está generando las siguientes respuestas:

  • / incluye 403
  • / include / 404
  • /include/config.inc 403

Al mirar mi patrón, puedo ver que el problema es probable en la parte (/.*), pero todo lo que he intentado me da los mismos resultados; en lugar de obtener 404 de forma consistente, obtengo un 404 para el primer caso y 403 para todo lo demás. ¿Qué pasa con la expresión que estoy usando? Alternativamente, dado que tengo que hacer esto para algunos directorios, ¿existe un enfoque general que me permita convertir las 403 respuestas a 404?

ACTUALIZACIÓN: descubrí que al eliminar FileMatch obtengo mejores resultados, por lo que mi .htaccess ahora se ve así:

Options -Indexes RedirectMatch 404 ^/include(/.*)?$ # Added dlamblin''s first suggestion

Y genera las siguientes respuestas:

  • / incluir 404
  • / include / 404
  • /include/config.inc 403

ACTUALIZACIÓN: Curiosamente, he descubierto que lo siguiente produce resultados diferentes:

RedirectMatch 404 ^/include(/?|/.*)$ RedirectMatch 404 ^/template(/?|/.*)$

El patrón de plantilla funciona en todos los casos, sin embargo, aún genera 403 para todos los archivos incluidos (por ejemplo, /include/config.inc). ¿Podría ser un problema con el nombre del directorio y no un problema con el archivo .htaccess en sí?

ACTUALIZACIÓN: Lo siguiente en mi .htaccess entraba en conflicto con la redirección al acceder a /include/config.inc.

<FilesMatch config> Order allow,deny Deny from all </FilesMatch>


¿No quieres ''^ / include (/.*)?$''

Esta parte es una suposición, pero ¿qué pasaría si colocas el RedirectMatch sobre el bloque? De esta forma, no negaría (prohibiría) el acceso a una solicitud antes de redirigir esa solicitud a 404.


Puedo entender por qué el / include no es capturado por su RedirectMatch, no está haciendo que el final ''/'' sea opcional, sin embargo, la parte /include/config.inc está un poco en el lado desconcertante.

Aquí es lo que tengo que trabajar en Apache 2.2:

<FilesMatch /include(/?|/.*)> Order allow,deny Deny from all </FilesMatch> RedirectMatch 404 ^/include(/?|/.*)$

Esto maneja estos casos:

/include 404 /include/ 404 /include/config.inc 404

Tuve que cambiar la parte FilesMatch para que la parte / include funcione correctamente.

EDITAR:

La línea de coincidencia también funciona sin la sección <FilesMatch> en .htaccess y proporciona los resultados esperados.


Otra posibilidad es no molestar la coincidencia de todo el camino:

RedirectMatch 404 ^/include

Si hay rutas de URL públicamente visibles que pueden comenzar con "/ include" (por ejemplo, "/ includeMe"), una pequeña adición separará las URL privadas de las públicas:

RedirectMatch 404 ^/include(/|$)


Éste funciona como se espera para todos los archivos / directorios con nombre iniciado por punto incluso en subdirectorios:

<FilesMatch "^/..+"> Order allow,deny Deny from all Satisfy All </FilesMatch> RedirectMatch 404 ///..+$


Una manera mejor y más simple es la siguiente:

1 - Insertar en su conf principal (es decir, fuera del mundo VHOST):

<IfModule mod_alias.c> RedirectMatch 404 ^/myDirectory(?|//)$ </IfModule>

con myDirectory = css, js, imágenes ...

2 - Puede configurar un directorio por índices: de la siguiente manera:

Permita que se sirva su contenido de la directiva Apache "DirectoryIndex":

<Directory "/myPathtoMyWebDocRoot/"> Options Indexes AllowOverride None Order Allow, Deny Allow from all </Directory>

y denegar índice de directorio para otros:

<Directory "/myPathtoMyWebDocRoot/myDirectory/"> Options -Indexes AllowOverride None Order Allow, Deny Allow from all </Directory>

con myDirectory = *, css, images, js, secret, ... según sus necesidades.


Con la modificación de la modificación:

RewriteEngine on RewriteCond %{THE_REQUEST} ^.*//. RewriteRule ^(.*)$ - [R=404]

Cada archivo o directorio que comience con un punto será redireccionado a 404.

/myDir/.svn => 404 /.gitignore => 404 /dir1/dir2_dir3/

O para cambiar los 403,400 errores en errores 404, poner esto al final de /etc/apache2/conf.d/localized-error-pages O en un .htaccess

# Will raise a 404 error, because the file <fake_file_for_apache_404.php> doesn''t exist. # We change 403 or 400 to 404 ! ErrorDocument 400 /fake_file_for_apache_404.php ErrorDocument 403 /fake_file_for_apache_404.php # We need to rewrite 404 error, else we will have "fake_file_for_apache_404.php not found" ErrorDocument 404 "<!DOCTYPE HTML PUBLIC /"-//IETF//DTD HTML 2.0//EN/"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL <script type=/"text/javascript/">document.write(document.location.pathname);</script> was not found on this server.</p></body></html>" ErrorDocument 500 "Server in update. Please comme back later."


En ese caso, no necesita usar Options -Indexes Mi solución para dejar de mostrar el contenido del directorio como una lista y mostrar el error 404 es simple. Cree el archivo .htaccess en el directorio raíz de su proyecto y escriba qué directorios deberían protegerse.

Estructura de directorios

- your_root_directory - .htaccess - 404.html - index.html - app - other files I do not want to show - models - other files I do not want to show

.htaccess

RewriteEngine On RewriteRule ^app/ - [R=404,L] RewriteRule ^models/ - [R=404,L]

ErrorDocument 404 /your_root_directory/404.html La segunda línea de .htaccess no permite el acceso a los elementos de la lista en el directorio de la aplicación y todos sus subridectories.

La tercera línea de .htaccess no permite el acceso a los elementos de la lista en el directorio de modelos y todos sus subridectories.

El cuarto de la línea .htaccess establece nuestro propio error 404 (si no desea mostrar el error predeterminado de apache).

Recuerde borrar el caché en su navegador cuando trabaje con htaccess.