Pergunta

Os meus clientes querem usar 301 redirecionamentos para forçar o 'www' subdomínio em seus sites. So 'example.com/something' Resolve 'www.example.com/somthing' etc.

O que estou tentando fazer é simplesmente adicionar isso para o meu arquivo vhost:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

Eu também garantiu que reescrever mod foi validada por:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

O resultado dos meus esforços atuais, basicamente, parece ser bem sucedida. Apache é reiniciado e tudo funciona como esperado, exceto o reescrita não está acontecendo. Assim, ambos 'www.example.com' e 'example.com' determinação. O navegador não redirecionado para 'www.example.com' quando deveria. Alguma ideia? Eu tentei recarregar a configuração e reiniciar o apache várias vezes, mas eu não consigo obter a reescrever as regras de trabalho. Am I configurá-los no lugar errado, colocando-os aqui no vhost em vez de um arquivo .htaccess?

Qualquer conselho aqui seria útil. Estou completamente perplexo.

Foi útil?

Solução

Coloque este abaixo de sua entrada VirtualHost principal:

<VirtualHost *:80>
    ServerName example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

Você principal VirtualHost deve ter uma entrada ServerName www.example.com e não aliases ou redirecionamentos. Além disso, mod_rewrite não é necessário para esse redirecionamento.

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