1

私はexample.comというサイトを持っています。www.example.com へのすべてのトラフィックは、次を使用して .htaccess ファイル内の example.com にリダイレクトされます。

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

インターウェブからスワイプしたこのコードは正常に動作します。

サブドメイン subdom.example.com を追加しました。同様に、www.subdom.example.com へのすべてのトラフィックは、非 www 正規バージョンにリダイレクトする必要があります。

次のコードは機能しません。

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://subdom.example.com/$1 [R=301,L]

おそらく、サブドメインが関係している場合、リダイレクトの動作は少し異なります。上記のスニペットを編集して任意の www. 正規の非 www へのトラフィック。サブドメイン版?

4

1 に答える 1

2

両方のリダイレクトに十分な RewriteCond 条件がないと思います。何が起こっているかというと、最初のものは無条件のリダイレクトであり、最初に表示されるため常に起動し、2 つ目は決して起動しません。

コードを次のように置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

上記のコードは、両方のドメインで機能します。

于 2013-08-05T18:27:51.803 に答える