Как я могу принудительно использовать поддомен «www» с Apache2 + Rails + Phusion Passenger?

StackOverflow https://stackoverflow.com/questions/1896321

Вопрос

Мои клиенты хотят использовать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top