No se puede cargar el módulo mod_rewrite de Apache

No se puede cargar el módulo mod_rewrite de Apache

Estoy intentando utilizar mod_rewriteel 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---

  1. El archivo CAMBIADO httpd.confrealizó estos cambios:
    a. No comentado LoadModule rewrite_module modules/mod_rewrite.so
    b. Cambiado AllowOverride NoneaAllowOverride All

  2. Servidor apache reiniciado

  3. 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.

La captura de pantalla de mi símbolo del sistema.

Pero después de realizar todos estos pasos no puedo ver mod_rewrite como módulo cargado en phpinfo.

Captura de pantalla del archivo 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 .htaccessun archivo, pero esto no funciona. Apache parece ignorar .htaccessel 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 .htaccessni de él info.php, pero aún así no está redireccionando. Estoy agregando la Virtual hostconfiguració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.phpcuando intento ejecutar fun.html. Simplemente dice:

La URL solicitada /working.php no se encontró en este servidor.

Respuesta1

  1. 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.
  2. Además de cargar el módulo, la única directiva que necesita es:

    Reescribir motor en

Extra:

  1. Considere Redirect/RedirectMatch en su lugar (de mod_alias) para redirecciones simples, si eso es todo lo que necesita.
  2. 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/ .htaccesscontexto (cuando se excluye el prefijo de barra diagonal).

información relacionada