O subdomínio não funciona sem www na frente dele [duplicado]

3

Eu tinha uma configuração de subdomínio no cpanel antes (sub.domain.com redirecionar para domain.com/sub/) e, de repente, hoje percebi que estava reescrevendo a URL no navegador para www.domain.com/sub/ em vez de apenas deixá-lo como sub.domain.com. Eu não sabia qual era o problema, mas decidi deletar meu sub-domínio e recriá-lo no cpanel. Agora eu só posso acessá-lo, indo para www.sub.domain.com (sub.domain.com produz um erro de servidor não encontrado).

EDIT: O problema parece estar no arquivo .htaccess. Depois de apagá-lo, as coisas voltaram ao normal. No entanto, agora meu novo problema é como configurar o arquivo .htaccess corretamente. Eu modifiquei originalmente para tentar realizar o seguinte:

Eu tenho três pastas, live, staging e dev:

1) As solicitações para domain.com ou www.domain.com são direcionadas para domain.com/live (e o URL que o usuário vê é sempre reescrito como www.domain.com).

2) Solicitações de staging.domain.com e dev.domain.com ou direcionadas para domain.com/staging e domain.com/dev, respectivamente, e o usuário vê staging.domain.com ou dev.domain.com no navegador.

3) Qualquer subdomínio em geral não é reescrito pelo navegador quando eu o adiciono no cpanel.

Meu arquivo .htaccess atual realiza o número 1 bem, mas reescreve staging.domain.com para www.domain.com/staging e assim por diante.

RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1
    
por Choy 17.01.2010 / 19:43

1 resposta

0

Eu ajustei a lógica do meu código original e parece ter uma solução de trabalho viável. Todos os testes que fiz foram bem-sucedidos, se alguém vir alguma falha no código ou como ele pode ser otimizado para se adequar às condições apresentadas na pergunta original, entre em contato. Tenho pouca experiência em trabalhar com reescritas. Obrigado.

Código de trabalho:

# REDIRECTS
#
# Add www in front of all URLs except subdomains
#
RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html
#
# Add forward slash at end of www URLs
#
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]
#
# Forward requests to live folder
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

* Observação: não sei por que a última parte do código não redireciona os URLs de subdomínio para uma pasta ativa. Funciona do jeito que eu quero, só não sei porque ^ _ ^;

    
por 18.01.2010 / 22:13