3

私のクライアントは、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>

また、次の方法で mod の書き換えが有効になっていることも確認しました。

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

私の現在の努力の結果は、基本的に成功しているように見えます。Apache が再起動し、書き換えが行われないことを除いて、すべてが期待どおりに機能します。したがって、「www.example.com」と「example.com」の両方が解決されます。ブラウザが「www.example.com」にリダイレクトされるべきときにリダイレクトされません。何か案は?構成をリロードしてApacheを再起動しようと何度か試みましたが、書き換えルールが機能していないようです。.htaccess ファイルではなく vhost に配置することで、間違った場所に設定しているのでしょうか?

ここでのアドバイスは役に立ちます。私は完全に困惑しています。

4

1 に答える 1

11

これをメインの VirtualHost エントリの下に配置します。

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

メインの VirtualHost には ServerName www.example.com エントリが必要で、エイリアスやリダイレクトはありません。また、このリダイレクトには mod_rewrite は必要ありません。

于 2009-12-13T12:20:18.580 に答える