Как я могу принудительно использовать поддомен «www» с Apache2 + Rails + Phusion Passenger?
-
19-09-2019 - |
Вопрос
Мои клиенты хотят использовать 301 редирект, чтобы принудительно использовать субдомен www на своих сайтах.Таким образом, «example.com/something» разрешается в «www.example.com/somthing» и т. д.
Я пытаюсь просто добавить это в свой файл 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>
Я также убедился, что перезапись модов включена с помощью:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload
Результаты моих нынешних усилий в основном кажутся успешными.Apache перезагружается, и все работает как положено, ЗА ИСКЛЮЧЕНИЕМ перезаписи не происходит.Таким образом, разрешаются как «www.example.com», так и «example.com».Браузер не перенаправляется на www.example.com, когда это необходимо.Есть идеи?Я несколько раз пытался перезагрузить конфигурацию и перезапустить Apache, но, похоже, правила перезаписи не работают.Я устанавливаю их не в том месте, размещая здесь, на виртуальном хосте, а не в файле .htaccess?
Любой совет здесь будет полезен.Я совершенно сбит с толку.
Решение
Поместите это под основной записью VirtualHost:
<VirtualHost *:80>
ServerName example.com
RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>
Ваш основной VirtualHost должен иметь запись ServerName www.example.com и не иметь псевдонимов или перенаправлений.Кроме того, для этого перенаправления не требуется mod_rewrite.