Não é possível carregar o módulo mod_rewrite do Apache

Não é possível carregar o módulo mod_rewrite do Apache

Estou tentando usar mod_rewriteo módulo do Apache24 server, mas não estou conseguindo carregá-lo. Eu sei que muitas perguntas foram feitas sobre esse tópico e passei por todas elas, mas nada parece funcionar. Estes são os passos que segui até agora ---

  1. CHANGED httpd.conffez estas alterações:
    a. Não comentado LoadModule rewrite_module modules/mod_rewrite.so
    b. Alterado AllowOverride NoneparaAllowOverride All

  2. Servidor Apache reiniciado

  3. Módulos carregados verificados usando o comando prompt de comando httpd -M. Posso ver que o módulo mod_rewrite foi carregado. Estou anexando a imagem abaixo.

A captura de tela do meu prompt de comando

Mas depois de executar todas essas etapas, não consigo ver o mod_rewrite como módulo carregado no arquivo phpinfo.

Captura de tela do arquivo phpinfo

Como pode ser visto na foto acima, não há módulo carregado mod_rewrite. Além disso, como um hack selvagem, tentei reescrever URLs usando .htaccessarquivo, mas não funcionou. O Apache parece ignorar .htaccesso arquivo, embora eu tenha colocado esse arquivo dentro do meu diretório raiz.

 Note: I am running `PHP` as an apache module
 Using `WAMP` stack
 Using `localhost` as server

Preciso muito deste módulo para fins de reescrita de URL. Vocês podem sugerir alguma outra maneira de carregar este módulo?

EDITAR

Tentei reescrever a URL do host virtual, pois a resposta sugere que o módulo está carregado e não depende nem de .htaccess.Mas info.phpainda assim não está redirecionando. Estou adicionando a Virtual hostconfiguração abaixo ---

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

O código acima não o redireciona working.phpquando tento executar o fun.html. Simplesmente diz:

o URL solicitado /working.php não foi encontrado neste servidor.

Responder1

  1. Você não precisa de .htaccess ou AllowOverride para que o mod_rewrite funcione, não use, já que você é o administrador do seu servidor, pois isso apenas complicará sua vida e causará sobrecarga desnecessária ao seu servidor.
  2. Além de carregar o módulo, a única diretiva necessária é:

    RewriteEngine ativado

Extra:

  1. Considere Redirect/RedirectMatch (de mod_alias) para redirecionamentos simples, se isso for tudo que você precisa.
  2. Considere definir seus redirecionamentos/reescritas no contexto do virtualhost para evitar futuros pesadelos e perda de cabelo em um futuro próximo.

Responder2

A partir das capturas de tela vinculadas, a raiz do servidor (caminho do sistema de arquivos) parece ser C:/Apache24, mas você não faz referência a C:nenhuma das diretivas de configuração do servidor? Você precisa referenciar o caminho completo do sistema de arquivos, por exemplo:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

Esta diretiva, usada diretamente no VirtualHost (fora de um <Directory>contêiner), nunca corresponderá. Quando usado em um contexto VirtualHost (ou configuração de servidor), mod_rewrite corresponde ao caminho completo da URL, que notavelmenteincluio prefixo da barra. Esta é uma diferença importante quando usar mod_rewrite é um diretório/ .htaccesscontexto (quando o prefixo da barra é excluído).

informação relacionada