Não consigo fazer o mod_rewrite trabalhar no Lion. Estou desenvolvendo vários sites localmente, em ~ / Sites, usando arquivos .htaccess. Estou no 10.7.3 e não toquei em nenhum arquivo de configuração, exceto para ativar o PHP no httpd.conf (que funciona).
Eu sei que há pelo menos duas perguntas sobre isso aqui, mas as soluções detalhadas lá não funcionam. Nem as outras soluções que encontrei na web. Eu devo estar fazendo algo estúpido ou ignorando algo, ou então provavelmente estou ficando louco, mas não está funcionando.
Eu tentei todas as coisas usuais:
Em
/private/etc/apache2/users/<myusername>.conf
, a mudançaAllowOverride None
paraAllowOverride All
e reiniciar o servidor webAlém disso, em
/private/etc/apache2/httpd.conf
, altere todas / todas as ocorrências deAllowOverride None
paraAllowOverride All
- eu tentei em todos os vários lugares em que essas diretivas são encontradasTente basicamente todas as combinações possíveis de valores para a
Options
linha acima / abaixo daAllowOverride
linha, incluindo os valores:Indexes MultiViews FollowSymLinks All
Sempre reinicie o servidor da Web após essa alteração, é claro. Nada disso funciona. Todos os meus URLs limpos simplesmente não funcionam; Eu recebo um 404 - não encontrado. O log de erros do Apache apenas fornece os erros "O arquivo não existe:". Portanto, parece que o módulo mod_rewrite nem está funcionando.
Eu me certifiquei de que o mod_rewrite seja carregado no httpd.conf, o que é; por padrão, é uma instalação Lion.
O mais louco é que tudo estava funcionando perfeitamente - até que eu migrei para uma nova máquina executando o Lion. Ou seja, estou descartando um erro nos meus arquivos .htaccess porque sei que funcionava antes. Além disso, se houvesse um erro no .htaccess, eu receberia algum tipo de mensagem de erro do módulo mod_rewrite no error_log do Apache, pelo menos me dizendo que o próprio módulo está sendo chamado. Mas isto não esta acontecendo.
Estou negligenciando alguma coisa? Preciso alterar as configurações em outro lugar? Eu tenho que mudar a configuração do PHP? Por que as instruções (como Como ativar o mod_rewrite no MacOSX Lion e fazer com que o mod_rewrite funcione no Mac OS X ) estão funcionando para outras pessoas, mas não para mim? :)
Já perdi horas com isso. Qualquer ajuda será muito apreciada.
fonte
Respostas:
Você deve ter certeza de que no seu /etc/apache2/users/username.conf você tem o seguinte:
Os FollowSymlinks e AllowOverride são essenciais aqui. Enquanto você está sugerindo os dois na sua pergunta, talvez você não os tenha configurado corretamente em conjunto.
Verifique se o httpd.conf /private/etc/apache2/extra/httpd-userdir.conf também está incluído. É por padrão.
Após qualquer modificação, reinicie o servidor da Web para que as alterações entrem em vigor.
Se você ainda estiver tendo problemas, talvez haja um problema com suas regras de reescrita reais. Você os estava usando em um contexto .htaccess antes também? Observe que em um .htaccess, a regex de regra de regravação é comparada com um URI de solicitação sem a barra inicial e sempre relativa ao diretório em que o .htaccess reside , enquanto que em um httpd.conf global o URI deve corresponder a uma barra inicial e é em relação à raiz da web. Como, supostamente, você possui seu .htaccess em um subdiretório ~ / Sites, suas regras de reescrita podem se comportar diferentes de quando o .htaccess reside na raiz da web de um host (virtual).
Para depurar o mod_rewrite, você pode habilitar o registro de reescrita. Você deve habilitar isso no /etc/apache2/httpd.conf:
fonte
Adicionar opções + FollowSymLinks funcionou bem para mim
fonte
Options +FollowSymLinks
? Eu só adicionar essa linha funciona para mimEu estava com um problema semelhante em que meu arquivo .htaccess estava sendo completamente ignorado enquanto estava em uma subpasta dentro do diretório ~ / Sites em um VirtualHost configurado corretamente.
Depois de passar a última hora brincando com diferentes arquivos de configuração e definindo AllowOverride All em vários lugares, finalmente descobri que o arquivo .htaccess, embora parecesse um arquivo .htaccess no Finder, era na verdade um arquivo .htaccess.txt com o extensão oculta.
Para verificar e alterar seu arquivo .htaccess, clique com o botão direito do mouse e escolha Obter informações e remova qualquer extensão principal do final, como a que eu tinha:
E agora funciona!
fonte
Abaixo as entradas .htaccess corrigidas para mim
fonte
Colocando .htaccess em / Library / WebServer / Documents e abra "localhost /"; para testá-lo, funciona como esperado. Simplesmente não funciona em "~ / Sites". Obrigado Niels Heidenreich por isso!
fonte
Quando você digita: / Users / username / app_name
O / refere-se à raiz do servidor da web:
"localhost /"
Se você usar / ~ nome de usuário / app_name em sua reescrita, deve funcionar.
fonte
/
são sempre caminhos absolutos para Apache, ver definição de raiz webserver em http.conf (<Directory "/Library/WebServer/Documents">
)