Apache2: Tentando mapear um subdomínio para um subdiretório

2

Então basicamente eu quero ter: sub.domain.com/ qualquer coisa - > domain.com/asub/anything

Eu sou um pouco novo nisso e um pouco confuso. A primeira coisa que fiz foi configurar minhas configurações de DNS para que sub.domain.com fosse para domain.com usando um CNAME (seria melhor um registro A e o IP?)

Em seguida, entrei no meu arquivo VirtualHost e tive:

RewriteEngine on

RewriteCond %{HTTP_HOST} www.(.+) [NC]
RewriteRule ^/(.*) http://domain.com/$1 [R]

RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^/(.*) http://domain.com/asub/$1 [R]

Portanto, a primeira regra destina-se a lidar com www. e certificando-se de que é capturado corretamente e funciona.

A segunda regra é o que eu adicionei para o mapeamento de subdomínio e não parece estar fazendo nada

    
por user1561753 24.10.2013 / 20:57

1 resposta

3

Como você tem acesso à configuração do apache, aconselho usar vhosts separados; isso impede o loop em suas reescritas / redirecionamentos.

Você também deve escapar de qualquer caractere especial em um padrão correspondente. E ancore seus padrões corretamente!

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias sub.example.com

  RewriteEngine on
 #RewriteCond %{HTTP_HOST} ^www\. [NC]
  RewriteRule ^/(.*) http://example.com/$1 [R]

  RewriteCond %{HTTP_HOST} ^sub\.example\.com$
  RewriteRule ^/(.*) http://example.com/asub/$1 [R]
</VirtualHost>

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www/htdocs
  ...
</VirtualHost>

O comentário é deliberado; dependendo se você quer www. ou sub. para ser correspondido por qualquer pedido não coberto aqui, comente o outro e será o padrão para qualquer coisa.exemplo.com.

    
por 24.10.2013 / 23:26