URL Dinâmico para URL Estático com mod-rewrite (provavelmente um problema RewriteRule)

1

Mudei um site de um host para outro e, ao fazer isso, deparei com a armadilha de não baixar meu arquivo .htaccess no processo.

Estou tentando reconstruir o dito .htaccess com base em uma cópia salva anterior (possivelmente não funcional), mas tudo o que tenho recebido são 404 páginas. Em outras palavras, algo está errado com esta simples regra de reescrita, mas eu assumo que o mod_rewrite está funcionando corretamente, já que não vejo mais erros do tipo "erro interno do servidor 500" e outros sites vhost estão operacionais com o mod_rewrite na mesma máquina. / p>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]
</IfModule>

Uma página de exemplo (atual, funcionando) do meu site:

site.com/index.php?page=tips

Todos os meus links e, esperamos, a barra de endereço devem estar nesta forma:

site.com/tips/

Eu pensei que eu entendi isso; não é terrivelmente complexo. Mudei e alterei a linha RewriteRule para uma variedade de combinações com base nas sugestões de vários sites. Eu pesquisei por dois dias e encontrei algumas coisas que estão perto do que estou fazendo, mas sem correspondências exatas. Toda vez que faço uma alteração, estou reiniciando o serviço do apache no servidor, indo para o Chrome na minha máquina local e pressionando Ctrl + F5 para limpar o cache e atualizar; Existe alguma chance de eu perder um passo de "recarga limpa"?

Todo o site acontece através do index.php, e eu não estou planejando complicar as coisas com mais aninhamento até eu entender o regex muito melhor. Qualquer ajuda é muito apreciada!

Notas de rodapé: Eu estou no Apache v2.2.22, e eu não consigo fazer o recurso "RewriteLogs" desta versão funcionar (não usar o .htaccess para isso, é claro) ou eu não teria postado este noob pergunta hoje. Em 2.4, este recurso não é mais válido de qualquer maneira (o log tem uma revisão total), mas eu não consigo atualizar para isso ainda usando o apt-get no meu servidor OpenVZ Ubuntu 12.04 x64.

    
por p1agu3 06.02.2013 / 20:15

1 resposta

0

Acabou sendo que o mod_rewrite não estava ativado no meu servidor. Eu chequei isso colocando um arquivo phpinfo.php no diretório do site e checando a seção "Loaded Modules" para o mod_rewrite, que de fato estava faltando.

Ativei mod_rewrite com sudo a2enmod rewrite , verifiquei a lista de módulos novamente com apache2ctl -M e tudo começou a funcionar novamente.

Ainda mais estranho, o mod_rewrite de alguma forma se desligou de todo o servidor, não apenas dessas páginas. Dado que eu estava servindo outros sites usando seus próprios arquivos .htaccess e eles também não estavam funcionando (o que é o que me colocou nisso), estou feliz por ter descoberto isso com relativa rapidez.

Eu também aprendi que o Ubuntu tem seu próprio grupo para aprovação / teste de atualização do apache, e eles ainda não qualificaram o patch 2.4 do Apache, e pode demorar um tempo desde que mudanças significativas foram trazidas com ele.

    
por 07.02.2013 / 18:24