php - habilitar - a2enmod rewrite
¿Cómo verificar si mod_rewrite está habilitado en el servidor? (15)
Para verificar si el módulo mod_rewrite está habilitado, cree un nuevo archivo php en su carpeta raíz de su servidor WAMP. Introduzca la siguiente
phpinfo();
Acceda a su archivo creado desde su navegador.
Ctrl F para abrir una búsqueda. Busque ''mod_rewrite''. Si está habilitado lo ves como ''Módulos cargados''
De lo contrario, abra httpd.conf (archivo de configuración de Apache) y busque la siguiente línea.
#LoadModule rewrite_module modules/mod_rewrite.so
Retire el signo de libra (''#'') al inicio y guarde este archivo.
Reinicia tu servidor apache.
Acceda al mismo archivo php en su navegador.
Busque ''mod_rewrite'' nuevamente. Deberías poder encontrarlo ahora.
Actualmente estoy usando el hosting con el servidor de Lightspeed . Hosting dice que mod_rewrite
está habilitado pero no puedo hacer que mi script funcione allí. Cada vez que intento acceder a la URL, devuelve 404 - página no encontrada .
Puse los mismos códigos en otro servidor que se ejecuta con Apache. Está trabajando allí. Así que supongo que es el problema de .htaccess
y mod_rewrite
.
Pero el soporte de Hosting aún insiste conmigo en que su mod_rewrite está activado, por lo que me gustaría saber cómo puedo verificar si está realmente habilitado o no.
Intenté consultar con phpinfo()
, pero no tuve suerte, no puedo encontrar mod_rewrite
allí, ¿es porque están usando la lightspeed
?
¿Hay alguna manera de verificar? Por favor, ayúdame. Gracias.
FYI: mi código .htaccess
es
Options -Indexes
<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index/.php|assets|robots/.txt|favicon/.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>
Intenté así también
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index/.php|assets|robots/.txt|favicon/.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Pero el mismo resultado.
Estaba teniendo el problema exacto, lo resolví haciendo clic en la estructura personalizada, luego /index.php/%postname%/
y funciona
Espero que esto le ahorre a alguien el estrés que tuve al descubrir que diablos estaba mal con eso.
Esto funciona en CentOS:
$ sudo httpd -M |grep rewrite_module
Debería salir rewrite_module (shared)
La función de PHP apache_get_modules()
una lista de módulos habilitados. Para verificar si mod_rewrite
está habilitado, puede ejecutar la siguiente secuencia de comandos en su servidor:
<?php
print_r(apache_get_modules());
?>
Si el ejemplo anterior falla, puede verificar mod-rewrite usando su archivo .htaccess
.
Cree un archivo htaccess
en la raíz del documento y agregue la siguiente rewriteRule:
RewriteEngine on
RewriteRule ^helloWorld/?$ /index.php [NC,L]
Ahora visite http://example.com/HelloWorld . Se le enviará internamente a la página /index.php de su sitio. De lo contrario, si mod-rewrite está deshabilitado, obtendrá un error del servidor 500 Internel.
Espero que esto ayude.
Puedes usar la función php
apache_get_modules
y busca mod_rewrite
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Si
in_array(''mod_rewrite'', apache_get_modules())
devuelve true
luego se habilita mod-rewrite.
Si apache_get_modules () no se reconoce o no hay información sobre este módulo en phpinfo (); Intente probar la reescritura mod agregando esas líneas en su archivo .htaccess:
RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php
Y mod_rewrite.php:
<?php echo "Mod_rewrite is activated!"; ?>
Si está en el sistema Linux, puede verificar todos los módulos habilitados para apache2 (en mi caso) en la siguiente carpeta: / etc / apache2 / mods-available
cd /etc/apache2/mods-available
escribir: ll -a
si desea verificar los módulos disponibles para la carpeta php (en este caso php 7) /etc/php/7.0/mods-available
cd /etc/php/7.0/mods-available
escribir: ll -a
Si está utilizando un archivo de configuración de hosts virtuales, asegúrese de que el host virtual en cuestión tenga la directiva AllowOverride All
algún lugar como este:
<VirtualHost *:80>
...
<Directory "directory/of/your/.htaccess">
AllowOverride All
</Directory>
</VirtualHost>
Si este código está en su archivo .htaccess (sin el cheque para mod_rewrite.c)
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index/.php|assets|robots/.txt|favicon/.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
y puede visitar cualquier página de su sitio con un error de servidor de 500, creo que es seguro decir que la modificación de mod está activada.
Solo necesita verificar si el archivo está allí, escribiendo
cat /etc/apache2/mods-available/rewrite.load
La línea de resultado no se puede comentar comenzando con #
consola:
<VirtualHost *:80>
...
<Directory ...>
AllowOverride All
</Directory>
</VirtualHost>
sudo a2enmod rewrite
sudo service apache2 restart
desde la línea de comando, escribe
sudo a2enmod reescribir
si el modo de reescritura ya está habilitado, se lo dirá!
solo crea una nueva página y agrega este código
<?php
if(!function_exists(''apache_get_modules'') ){ phpinfo(); exit; }
$res = ''Module Unavailable'';
if(in_array(''mod_rewrite'',apache_get_modules()))
$res = ''Module Available'';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>
y ejecuta esta página, luego encontrarás que will poder saber que el módulo está Disponible o no; si no, entonces puedes preguntar a tu hosting o si quieres habilitarlo en la máquina local, entonces revisa este tutorial paso a paso de youtube relacionado con habilitar el módulo de reescritura en wamp apache https://youtu.be/xIspOX9FuVU?t=1m43s Icono del servidor Wamp -> Apache -> Apache Modules y comprueba la opción del módulo de reescritura