rewriterule mod_rewrite ifmodule htaccess ejemplos apache .htaccess mod-rewrite

apache - mod_rewrite - Cómo depurar.htaccess RewriteRule no funciona



mod_rewrite htaccess (7)

Tengo una RewriteRule en un archivo .htaccess que no está haciendo nada. ¿Cómo soluciono esto?

  • ¿Cómo puedo verificar si Apache está leyendo y obedeciendo el archivo .htaccess ? ¿Puedo escribir un mensaje de eco "está funcionando", si lo escribo, ¿dónde se repetirá esa línea?
  • Si el archivo .htaccess no se está utilizando, ¿cómo puedo hacer que Apache lo use?
  • Si se usa .htaccess pero mi RewriteRule todavía no está teniendo efecto, ¿qué más puedo hacer para depurar?

¿Por qué no poner algo de basura en su archivo .htaccess e intentar cargar Apache? Si apache no se inicia, sabrá que está funcionando. Elimine la basura y vuelva a cargar Apache si carga las felicitaciones que configuró .htaccess correctamente.


En general, cualquier cambio en .htaccess debe tener efectos visibles. Si no tiene efecto, revise los archivos de configuración de Apache, algo como:

<Directory ..> ... AllowOverride None ... </Directory>

Debería cambiarse a

AllowOverride All

Y podrá cambiar las directivas en archivos .htaccess.


Ingrese algún valor no sakjnaskljdnas en su .htaccess por ejemplo, foo bar , sakjnaskljdnas cualquier palabra clave no reconocida por htaccess y visite su URL. Si está funcionando, deberías obtener un

Error interno de servidor 500

error de servidor interno

El servidor encontró un error interno o una configuración incorrecta y no pudo completar su solicitud ....

Te sugiero que lo pongas pronto después de RewriteEngine on .

Ya que estás en tu máquina. Supongo que tiene acceso al archivo apache .conf .

abra el archivo .conf y busque una línea similar a:

LoadModule rewrite_module modules/mod_rewrite.so

Si se comenta (#), elimine el comentario y reinicie apache.

Para registrar la reescritura

RewriteEngine On RewriteLog "/path/to/rewrite.log" RewriteLogLevel 9

Coloque las 3 líneas anteriores en su virtualhost . reinicia el httpd.

RewriteLogLevel 9 Usar un valor alto para Level reducirá drásticamente su servidor Apache! Utilice el archivo de registro de reescritura en un nivel superior a 2 solo para la depuración. El nivel 9 registrará casi todos los detalles de reescritura.

ACTUALIZAR

Las cosas han cambiado en Apache 2.4:

DESDE Actualizar a 2.4 de 2.2

Las directivas RewriteLog y RewriteLogLevel se han eliminado. Esta funcionalidad ahora se proporciona configurando el nivel apropiado de registro para el módulo mod_rewrite usando la directiva LogLevel . Ver también la sección de registro mod_rewrite.

Para obtener más información sobre LogLevel, consulte la Directiva LogLevel

puedes lograr

RewriteLog "/path/to/rewrite.log"

de esta manera ahora

LogLevel debug rewrite_module:debug


La respuesta "Ingresar algún valor no deseado" no me gustó, mi sitio siguió cargando a pesar de la basura ingresada.

En su lugar, agregué la siguiente línea en la parte superior del archivo .htaccess:

deny from all

Esto le avisará rápidamente si .htaccess está siendo recogido o no. Si se utiliza .htaccess, los archivos en esa carpeta no se cargarán en absoluto.


Para probar las reglas de reescritura de htaccess, simplemente complete la URL a la que está aplicando las reglas, coloque el contenido de su htaccess en el área de entrada más grande y presione el botón "Probar".

http://htaccess.mwl.be/


Si tiene acceso al directorio de apache bin, puede usar,

httpd -M para verificar los módulos cargados primero.

info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared)

Después de eso, las directivas simples como Options -Indexes o deny from all solidificarán que .htaccess está funcionando correctamente.


Tal vez un método más lógico sería crear un archivo (por ejemplo, test.html), agregar algo de contenido y luego intentar establecerlo como la página de índice:

DirectoryIndex test.html

En su mayor parte, la regla .htaccess anulará la configuración de Apache cuando trabaje en el directorio / nivel de archivo