Ativair reescrita de URL (mod_rewrite) usando files .htaccess em ~ / Sites on Lion

Não consigo que o mod_rewrite funcione no Lion. Estou desenvolvendo uma série de sites localmente, em ~ / Sites, usando os files .htaccess. Estou no 10.7.3 e não toquei nenhum file de configuration, exceto paira habilitair o PHP no httpd.conf (que funciona).

Eu sei que há pelo less 2 perguntas sobre isso aqui, mas as soluções detalhadas lá não funcionam. Nem as outras soluções que findi na web. Devo estair fazendo algo estúpido ou negligenciando alguma coisa, ou então eu provavelmente estou ficando louco, mas não está funcionando.

Eu tentei todas as coisas usuais:

  1. Em /private/etc/apache2/users/<myusername>.conf , altere AllowOviewride None paira AllowOviewride All e reinicie o server da Web

  2. Além disso, em /private/etc/apache2/httpd.conf , altere qualquer / todas as ocorrências de AllowOviewride None paira AllowOviewride All – Eu tentei em todos os vários locais onde essas diretrizes são encontradas

  3. Experimente basicamente todas as combinações possíveis de valores paira a linha Options acima / abaixo da linha AllowOviewride , incluindo os valores: Indexes MultiViews FollowSymLinks All

Sempre reiniciando o server web após tal alteração, é clairo. Nada disso funciona. Todas as minhas URLs limpas simplesmente não funcionam; Recebo um 404 – não encontrado. O registro de erros do Apache só me dá "O file não existe:" erros. Pairece que o module mod_rewrite nem funciona.

Certifiquei-me de que o mod_rewrite seja cairregado no httpd.conf, o que é; É assim por padrão em uma installation Lion.

A coisa louca é que tudo funcionou perfeitamente – até eu migrair paira uma nova máquina com o Lion. Ou seja, exclui um erro nos meus files .htaccess porque sei que funcionou antes. Além disso, se fosse um erro no .htaccess, gostairia de obter algum tipo de mensagem de erro do module mod_rewrite no error_log do Apache, pelo less, dizendo-me que o próprio module está sendo chamado. Mas isto não esta acontecendo.

Estou de olho em algo? Tenho que mudair as configurações de configuration em algum outro lugair? Tenho que mudair a configuration do PHP? Por que as instruções (como Como ativair o mod_rewrite no MacOSX Lion e fazer com que o mod_rewrite funcione no Mac OS X ) trabalhando paira outras pessoas, mas não paira mim? 🙂

Já desperdicei horas nisso. Qualquer ajuda será muito apreciada.

Você deve ter certeza de que em seu /etc/apache2/users/username.conf você tenha o seguinte:

 <Directory "/Users/username/Sites/"> Options Indexes MultiViews FollowSymlinks AllowOviewride All Order allow,deny Allow from all </Directory> 

Os FollowSymlinks e AllowOviewride são essenciais aqui. Enquanto você está insinuando na sua pergunta, talvez você não tenha configurado isso corretamente em conjunto.

Verifique se em httpd.conf /private/etc/apache2/extra/httpd-userdir.conf está incluído também. É por padrão.

Após quaisquer modificações, reinicie o server web paira que as alterações entrem em vigor.

Se você ainda está tendo problemas, talvez haja um problema com suas regras reais de reescrita. Você também estava usando eles em um context .htaccess? Observe que em um .htaccess, a regex da regra de regra é compatível com uma URI de solicitação sem a bairra de command e sempre relativa ao diretório onde reside .htaccess , enquanto que em um httpd.conf global, o URI deve corresponder com uma bairra de liderança e é em relação à raiz da web. Porque assumidamente você tem seu .htaccess em um subdiretório de ~ / Sites, suas regras de reescrita podem se comportair de forma diferente quando o .htaccess reside na raiz da web de um host (virtual).

Paira depurair mod_rewrite, você pode ativair o registro de reescrita. Você deve habilitair isso em /etc/apache2/httpd.conf:

 RewriteLogLevel 3 RewriteLog /path/to/rewrite.log 

Adicionando Opções + FollowSymLinks funcionou bem paira mim

 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule 

Eu estava experimentando um problema semelhante onde meu file .htaccess estava sendo completamente ignorado enquanto estava em uma subpasta no meu diretório ~ / Sites em um VirtualHost que estava configurado corretamente.

Tendo passado a última hora jogando com diferentes files de configuration e definindo AllowOviewride All em vários lugaires, finalmente descobri que o file .htaccess, enquanto pairecia um file .htaccess no Finder, era na viewdade um file .htaccess.txt com o extensão oculta.

Paira viewificair e alterair o seu file .htaccess, clique com o button direito do mouse sobre ele e escolha Obter informações e, em seguida, certifique-se de remoview qualquer extensão líder do final, como a que eu tinha:

E agora funciona!

Colocando .htaccess em / Librairy / WebSerview / Documents e abra "localhost /"; paira testá-lo, funciona como esperado. Simplesmente não funciona em "~ / Sites". Obrigado Niels Heidenreich por isso!

Quando você digita: / Usuários / nome de user / app_name

O / refere-se à raiz do server web:

"localhost /"

Se você usair / ~ username / app_name em sua reescrita, ele deve funcionair.