desenv-web-rp.com

Apache reescrever regras para estação de trabalho e servidor de desenvolvimento

Eu tenho desenvolvedores editando páginas para vários sites em uma pilha WAMP e depois enviando para os servidores públicos que executam pilhas LAMP. Estamos muito felizes com isso, mas temos um pequeno incômodo: não podemos usar os mesmos arquivos .htaccess nos ambientes de desenvolvimento e produção. Nos sites públicos, a pasta de origem é mapeada para http://foo.com, http://bar.com e assim por diante. Na estação de trabalho do desenvolvedor, as pastas de origem são mapeadas para http://localhost/foo, http://localhost/bar e assim por diante. Isso significa que eu preciso de RewriteBase / para os servidores públicos, enquanto cada site na estação de trabalho do desenvolvedor usa RewriteBase /foo/, RewriteBase /bar/ ou qualquer outra coisa.

Existe alguma maneira de especificar o RewriteBase em relação ao arquivo .htaccess? Alguma outra idéia de como tornar minhas regras de reescrita mais portáteis?

Se você estiver curioso, estou usando regras de reescrita para redirecionar para o código de roteamento do CakePHP, então a regra fica assim:

RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]

Se eu não usar um RewriteBase de /foo/ na estação de trabalho do desenvolvedor, ele será reescrito para /cake_main.php em vez de /foo/cake_main.php.

7
Don Kirkby

Minha solução para isso não foi mexer com as regras de reescrita, mas adicionar domínios/hosts locais separados com TLDs falsos ao meu PC.

Você pode fazer isso editando o arquivo C:\Windows\System32\drivers\etc\hosts

Lembre-se de que, no Windows 7 (e talvez no Vista), para editar com êxito esse arquivo, você precisa executar o editor de texto como administrador.

Você pode adicionar hosts usando linhas parecidas com:

127.0.0.2       www.mysite.local
127.0.0.3       www.myothersite.local

Uma vez implementados, você pode configurar o Apache para esses nomes de domínio e estará pronto.

Obviamente, isso não funciona para testes de outras máquinas na rede local, mas se você estiver nessa situação, pode ser melhor usar um servidor DNS local ou atribuir os hosts a endereços IP não portáteis locais e sincronize os arquivos em todos os PCs.

4
JasonBirch