Pergunta

Ok. Então, eu estou construindo este site que é acessível através de dois domínios diferentes. Então eu não posso usar RewriteBase no meu .htaccess. As regras (abaixo) eu uso para contornar este problema parece funcionar bem. No entanto, quando eu uso a seguir configurações .htaccess na minha caixa local com URLs limpas (WAMP) tudo funciona bem, mas no momento em que usar isso no servidor ao vivo (LAMP hospedagem compartilhada) cada página navego para exibe a home page (o um sob índice eu acho), embora o URL no navegador está claramente sendo atualizado.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

Qualquer ajuda ou idéias são muito apreciados.

  • Luke
Foi útil?

Solução

Provavelmente a melhor coisa a fazer é reproduzir o problema em sua caixa local e transformar-se RewriteLogLevel para que você possa ver o que está acontecendo. (Desde que você normalmente não pode alterar o nível de log on hospedagem compartilhada)

Você pode ser capaz de "simular" o problema fazendo uma reescrita diretório em sua configuração principal do Apache. (A hospedagem compartilhada, obviamente, faz sua própria reescrita antes que ele chegue ao .htaccess!) Se você não pode reproduzir o problema, você pode ter que começar de tentativa e erro de depuração no servidor remoto. Isso é feio, mas se é sua única opção:

Use o R (redirecionamento) flag em substituições para enviar qualquer reescrita URL de volta para o seu browser. Use TELNET (ou um navegador apropriado add-on) para inspecionar as respostas HTTP.

Não se esqueça de escapar pontos em expressões regulares!

Como uma nota lateral, o padrão RewriteRule é combinado antes dos RewriteConds acima dele. Este tipo de configuração é provavelmente melhor para o desempenho:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

Note que eu não testei isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top