Como posso forçar 'www' subdomínio w / Apache2 + Rails + Phusion Passenger?
-
19-09-2019 - |
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.
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.