Redirecionamento do Host Virtual Apache2, exceto em um caminho especial

1

Suponha que temos dois domínios.

www.my-domain.com
www.mydomain.com

Como padrão, temos um redirecionamento de .mydomain.com / para .my-domain.com / via

(mydomain.conf)
<Virtualhost *:80>
  ServerName mydomain.com
  ServerAlias mydomain.com *.mydomain.com

  RewriteEngine on
  RewriteCond %{HTTP_HOST} (.+\.)?mydomain\.com(\/.+)?$ [NC]
  RewriteRule (.*) http://%1my-domain.com$2$1 [R=301]
</VirtualHost>

Mas agora, devido à compatibilidade retroativa, temos uma URL especial "www.mydomain.com/special/task.php" que precisa ser veiculada diretamente e não deve ser redirecionada.

O que estou tentando fazer é algo assim:

(mydomain.conf)
<Virtualhost *:80>
  ServerName mydomain.com
  ServerPath /special/
  DocumentRoot /var/www/special/
</VirtualHost>

<Virtualhost *:80>
  ServerName mydomain.com
  ServerAlias mydomain.com *.mydomain.com

  RewriteEngine on
  RewriteCond %{HTTP_HOST} (.+\.)?mydomain\.com(\/.+)?$ [NC]
  RewriteRule (.*) http://%1my-domain.com$2$1 [R=301]
</VirtualHost>

Mas isso não vai funcionar. O que estou fazendo errado ou isso é possível? O que eu tenho que fazer diferente?

    
por Hugie 09.12.2013 / 12:49

1 resposta

1

Você deve adicionar outro RewriteCond atrás do seu existente para implementar essa exceção. Assim:

RewriteCond %{REQUEST_URI} !=/special/task.php [NC]

Observe que, por padrão, todos os RewiteCond s estão conectados ao AND lógico. Portanto, o RewriteRule é acionado somente se todos os RewriteCond s forem avaliados como verdadeiros.

    
por 09.12.2013 / 13:03