Como testar se o mod_rewrite está ativado?

17

Estou configurando um ambiente para o wordpress no apache2, em uma nova instalação do ubuntu 12.04.

Para que URLS amigáveis ​​funcionem, estou tentando configurar o mod_rewrite. Segui algumas instruções que encontrei na rede e usei o a2enmod.

Agora. depois de reiniciar o apache, gostaria de verificar se o módulo está realmente carregado.

O comando que eu encontrei para obter uma lista de módulos carregados é este:

apache2 -t -D DUMP_MODULES

No entanto, isso retorna um erro:

apache2: nome de usuário incorreto $ {APACHE_RUN_USER}

Então, como faço para listar todos os módulos carregados ou verificar se mod_rewrite foi ativado?

user124130
fonte

Respostas:

18

KM01 significava, apachectlmas isso não fornecerá o que você precisa. Isso controlará o início / parada / reinicialização do servidor, além de fornecer algumas informações de status. A opção de arquivo php funciona, mas requer algum trabalho extra de sua parte. Em vez disso, tente executar php na linha de comando: $ php -i. Isso gera quais phpinfo()saídas, apenas na linha de comando.

Você pode obter uma lista de módulos compilados executando $ apache2 -l, mas isso não ajuda na exibição de módulos carregados dinamicamente usando as diretivas LoadModule (ou outras).

Você pode ver quais módulos estão sendo carregados dinamicamente observando as entradas em /etc/apache2/mods-enabled/. Alguns têm um arquivo conf adicional no mesmo diretório para configuração. Esses módulos NÃO estão sendo carregados duas vezes. Você pode ver uma lista de módulos disponíveis para carregar dinamicamente olhando /etc/apache2/mods-available/. Você pode habilitá-los na linha de comando com $ a2enmod <module_name>. Você pode descarregá-los com $ a2dismod <module_name>.

Ao concluir a ativação / desativação, você deve reiniciar o apache com $ service apache2 restartou $ apachectl graceful. Você precisará de privilégios de root (sudo) para executar a maioria, se não todos, deste trabalho.

Chris Smola
fonte
4

1) Digite <?php phpinfo(); ?>um arquivo php, salve-o e execute-o no servidor.

2) E agora você pode obter a lista de informações, basta pesquisar a palavra "mod_rewrite" no menu de pesquisa do navegador

3) Se for encontrado na seção “Módulos Carregados”, este módulo já estará carregado como você vê na figura abaixo; caso contrário, você precisará ir para a próxima etapa para ativar o módulo mod_rewrite.

fonte: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Richard
fonte
4

Em vez de usar o apache2comando, você tem o apachectlcomando? Ele deve estar no mesmo local que apache2. Ou você pode executar o comando com privilégios elevados usandosudo apache2 -t -D DUMP_MODULES

KM.
fonte
2

Assim como @Richard explicou, mas o que você realmente precisa fazer para conseguir isso é ter um arquivo com o seguinte conteúdo:

<?php
    phpinfo();
?>

Isso imprime várias informações sobre sua configuração do apache / php. Outras coisas úteis que você encontrará se o imagick estiver instalado ou não. Todos os módulos apache carregados também estão lá.

Borislav Sabev
fonte
2

As informações do PHP nem sempre mostram se estão ativadas ou não. Desculpe!

No entanto, esta página no Stack Overflow leva você a apontar na direção certa.

Como alternativa, aqui está um php para listá-los:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
misterich
fonte
2
Você está certo, a solução phpinfo (ou via extensão apache) funciona apenas se o PHP for compilado / usado como um módulo Apache. Não está em * CGI, FPM, etc. Além disso, o mod_rewrite pode ser carregado (LoadModule), mas a reescrita pode ser negada, de acordo com AllowOverride e / ou Options.
11124 julp
2

Basta criar um mod_rewrite.phparquivo no diretório raiz e colocar o código abaixo:

<?php 
echo
"Mod_rewrite is activated!"
; ?>

Agora renomeie seu .htaccessarquivo antigo

Basta criar um novo arquivo .htaccess e colocar o código abaixo.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Agora clique em salvar.

Então visite seu site, você receberá uma mensagem.

Awais
fonte
2

No centos 6.5+ no tipo de terminal

httpd -M | grep 'rewrite'

Se na resposta você puder ver rewrite_module (shared) significa que está instalado. Você pode remover o grep 'rewrite' e obter a lista de todos os módulos para a instalação do Apache.

Nicolas Guérinet
fonte
0

No tipo de suse como raiz no terminal httpd2 -M, isso fornece uma lista de módulos carregados. httpd2 -lapenas fornece o compilado em módulos. Isso funciona para o apache 2.4

Richard
fonte