![No se puede cargar el módulo mod_rewrite de Apache](https://rvso.com/image/697384/No%20se%20puede%20cargar%20el%20m%C3%B3dulo%20mod_rewrite%20de%20Apache.png)
Estoy intentando utilizar mod_rewrite
el módulo de Apache24 server
, pero no puedo cargarlo. Sé que se han hecho muchas preguntas sobre este tema y las he revisado todas, pero nada parece funcionar. Estos son los pasos que he seguido hasta ahora---
El archivo CAMBIADO
httpd.conf
realizó estos cambios:
a. No comentadoLoadModule rewrite_module modules/mod_rewrite.so
b. CambiadoAllowOverride None
aAllowOverride All
Servidor apache reiniciado
Módulos cargados comprobados mediante el comando del símbolo del sistema
httpd -M
. Puedo ver allí que el módulo mod_rewrite se ha cargado. Adjunto la imagen a continuación.
Pero después de realizar todos estos pasos no puedo ver mod_rewrite como módulo cargado en phpinfo
.
Como se puede ver en la imagen de arriba, no hay ningún módulo mod_rewrite cargado. Además, como truco salvaje, intenté reescribir las URL usando .htaccess
un archivo, pero esto no funciona. Apache parece ignorar .htaccess
el archivo, aunque lo he colocado dentro de mi directorio raíz.
Note: I am running `PHP` as an apache module
Using `WAMP` stack
Using `localhost` as server
Necesito urgentemente este módulo para fines de reescritura de URL. ¿Pueden sugerir alguna otra forma de cargar este módulo?
EDITAR
Intenté reescribir la URL desde el host virtual porque la respuesta sugiere que el módulo está cargado y no depende ni de él .htaccess
ni de él info.php
, pero aún así no está redireccionando. Estoy agregando la Virtual host
configuración a continuación---
<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">
<IfModule rewrite_module>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule rewrite_module>
RewriteRule ^working.php fun.html
</IfModule>
</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^working.php fun.html
# end Rewrite Rules #################
</VirtualHost>
El código anterior no lo redirige working.php
cuando intento ejecutar fun.html
. Simplemente dice:
La URL solicitada /working.php no se encontró en este servidor.
Respuesta1
- No necesita .htaccess o AllowOverride para que mod_rewrite funcione, no lo use, ya que usted es el administrador de su servidor, ya que solo complicará su vida y causará una sobrecarga innecesaria a su servidor.
Además de cargar el módulo, la única directiva que necesita es:
Reescribir motor en
Extra:
- Considere Redirect/RedirectMatch en su lugar (de mod_alias) para redirecciones simples, si eso es todo lo que necesita.
- Considere definir sus redirecciones/reescrituras en el contexto de virtualhost para evitar futuras pesadillas y pérdida de cabello en el futuro cercano.
Respuesta2
Según las capturas de pantalla vinculadas, la raíz de su servidor (ruta del sistema de archivos) parecería ser C:/Apache24
, pero ¿no hace referencia a C:
ninguna de las directivas de configuración de su servidor? Debe hacer referencia a la ruta completa del sistema de archivos, por ejemplo:
<Directory "C:/Apache24/htdocs">
RewriteRule ^working.php fun.html
Esta directiva, utilizada directamente en VirtualHost (fuera de un <Directory>
contenedor), nunca coincidirá. Cuando se usa en un contexto de VirtualHost (o configuración de servidor), mod_rewrite coincide con la ruta URL completa, lo que en particularincluyeel prefijo de barra diagonal. Esta es una diferencia importante cuando se usa mod_rewrite como directorio/ .htaccess
contexto (cuando se excluye el prefijo de barra diagonal).