web-dev-qa-db-ja.com

すべての仮想ホストのネイキッドドメインをwwwサイトにリダイレクトします

私のApacheサーバーには多数のVirtualHostsがあり、それらすべてのネイキッドドメインをwwwドメインにリダイレクトするoneルールが必要です。これは可能ですか?

4
sguha

他の回答に基づいて、ファイルの下部にキャッチオールVirtualHostを作成し、名前付きのwwwホストにリクエストをリダイレクトすることで、それを機能させることができました。

<VirtualHost *:80>
  ServerName default
  ServerAlias *
  <IfModule mod_rewrite.c>
    RewriteEngine on
    # WITH 'www.'
    RewriteCond %{HTTP_Host} !^www.(.*) [nocase]
    RewriteRule ^(.*)$ http://www.%{HTTP_Host}$1 [redirect=permanent,nocase,last]
  </IfModule>
</VirtualHost>
3
sguha

このようなものが機能するはずです:

RewriteCond %{HTTP_Host} !^www.(.*) [nocase]
RewriteRule ^/(.*)$ http://www.%1/$1 [redirect=permanent,nocase,last]
  1. RewriteCondは、www.で始まらないHTTP_Hostと一致します
  2. RewriteRulewww.RewriteCond(%1)への後方参照の前に追加し、実際のリクエストがあったものはすべてRewriteRule一致への後方参照に追加しますストリング
2
fukawi2