¿Cómo pruebo si mod_rewrite está habilitado?

17

Estoy configurando un entorno para wordpress en apache2, en una nueva instalación de ubuntu 12.04.

Para que funcionen las URLS amigables, estoy tratando de configurar mod_rewrite. Seguí algunas instrucciones que encontré en la red y usé a2enmod.

Ahora. Después de reiniciar Apache, me gustaría comprobar si el módulo está realmente cargado.

El comando que he encontrado para obtener una lista de módulos cargados es este:

apache2 -t -D DUMP_MODULES

Sin embargo, esto devuelve un error:

apache2: nombre de usuario incorrecto $ {APACHE_RUN_USER}

Entonces, ¿cómo enumero realmente todos los módulos cargados, o de lo contrario verifico si mod_rewrite ha sido habilitado?

usuario124130
fuente

Respuestas:

18

KM01 significaba apachectlpero eso no te dará lo que necesitas. Eso controlará el inicio / detención / reinicio del servidor, junto con proporcionar cierta información de estado. La opción de archivo php funciona, pero requiere un poco de trabajo adicional de su parte. En su lugar, intente ejecutar PHP desde la línea de comandos: $ php -i. Esto genera lo que se phpinfo()genera, solo en la línea de comando.

Puede obtener una lista de módulos compilados ejecutando $ apache2 -l, pero eso no ayuda a ver módulos cargados dinámicamente utilizando las directivas LoadModule (u otras).

Puede ver qué módulos se están cargando dinámicamente mirando las entradas en /etc/apache2/mods-enabled/. Algunos tienen un archivo conf adicional en el mismo directorio para la configuración. Esos módulos NO se están cargando dos veces. Puede ver una lista de módulos disponibles para cargar dinámicamente al mirar en /etc/apache2/mods-available/. Puede habilitarlos en la línea de comando con $ a2enmod <module_name>. Puedes descargarlos con $ a2dismod <module_name>.

Cuando haya terminado de habilitar / deshabilitar, debe reiniciar apache con $ service apache2 restarto $ apachectl graceful. Necesitará privilegios de root (sudo) para hacer la mayoría, si no todos, de este trabajo.

Chris Smola
fuente
4

1) Escriba <?php phpinfo(); ?>un archivo php y guárdelo y ejecute ese archivo en el servidor.

2) Y ahora puedes ver la lista de información, solo busca la palabra "mod_rewrite" en el menú de búsqueda del navegador

3) Si se encuentra en la sección "Módulos cargados", entonces este módulo ya está cargado como se ve en la imagen a continuación, de lo contrario, debe pasar al siguiente paso para habilitar el módulo mod_rewrite.

fuente: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Ricardo
fuente
4

En lugar de usar el apache2comando, ¿tiene el apachectlcomando? Debe estar en la misma ubicación que apache2. O podría ejecutar el comando con privilegios elevados utilizandosudo apache2 -t -D DUMP_MODULES

KM.
fuente
2

Tal como lo explicó @Richard, pero lo que realmente necesita hacer para lograrlo es tener un archivo con el siguiente contenido:

<?php
    phpinfo();
?>

Esto imprime diversa información sobre su configuración de apache / php. Otras cosas útiles que encontrará allí serían si imagick está instalado o no. Todos los módulos apache cargados están allí también.

Borislav Sabev
fuente
2

La información de PHP no siempre le mostrará si está habilitada o no. ¡Lo siento!

Sin embargo, esta página sobre desbordamiento de pila no conseguir que apunta en la dirección correcta.

Alternativamente, aquí hay algunos php para enumerarlos a todos:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
misterich
fuente
2
Tiene razón, la solución phpinfo (o mediante la extensión Apache) funciona solo si PHP se compila / usa como un módulo Apache. No en * CGI, FPM, etc. Además, se pudo cargar mod_rewrite (LoadModule) pero se pudo denegar la reescritura, de acuerdo con AllowOverride y / u Options.
julio
2

Simplemente cree el mod_rewrite.phparchivo en su directorio raíz y coloque el siguiente código en él:

<?php 
echo
"Mod_rewrite is activated!"
; ?>

Ahora cambie el nombre de su .htaccessarchivo anterior

Simplemente cree un nuevo archivo .htaccess y coloque el siguiente código.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Ahora presiona guardar.

Luego visite su sitio y recibirá un mensaje.

Awais
fuente
2

En centos 6.5+ en el tipo de terminal

httpd -M | grep 'rewrite'

Si en la respuesta, puede ver rewrite_module (compartido) significa que está instalado. Puede eliminar grep 'rewrite' y obtener la lista de todos los módulos para su instalación de Apache.

Nicolas Guérinet
fuente
0

En tipo suse como root en la terminal httpd2 -M, eso proporciona una lista de módulos cargados. httpd2 -lsolo da el compilado en módulos. Esto funciona para apache 2.4

Ricardo
fuente