![Não é possível carregar o módulo mod_rewrite do Apache](https://rvso.com/image/697384/N%C3%A3o%20%C3%A9%20poss%C3%ADvel%20carregar%20o%20m%C3%B3dulo%20mod_rewrite%20do%20Apache.png)
Estou tentando usar mod_rewrite
o 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 ---
CHANGED
httpd.conf
fez estas alterações:
a. Não comentadoLoadModule rewrite_module modules/mod_rewrite.so
b. AlteradoAllowOverride None
paraAllowOverride All
Servidor Apache reiniciado
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.
Mas depois de executar todas essas etapas, não consigo ver o mod_rewrite como módulo carregado no 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 .htaccess
arquivo, mas não funcionou. O Apache parece ignorar .htaccess
o 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.php
ainda assim não está redirecionando. Estou adicionando a Virtual host
configuraçã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.php
quando tento executar o fun.html
. Simplesmente diz:
o URL solicitado /working.php não foi encontrado neste servidor.
Responder1
- 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.
Além de carregar o módulo, a única diretiva necessária é:
RewriteEngine ativado
Extra:
- Considere Redirect/RedirectMatch (de mod_alias) para redirecionamentos simples, se isso for tudo que você precisa.
- 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/ .htaccess
contexto (quando o prefixo da barra é excluído).