0

だから私は私のhtaccessに次の書き換えコードを持っています

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

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

私のドメインの非 www を www にリダイレクトするのに最適です。

私はサブドメインを持っています。それを ' sub.domain.com' と呼びましょう。にwww.sub.domain.com移動すると、「 」にリダイレクトされsub.domain.com/sub/ます

4

1 に答える 1

0

質問にあるルールはどれも、リクエストをサブドメインのフォルダーにルーティングしません。元々リクエストに含まれていなかった場合、/sub/は決してそこにあるべきではありません。

つまり、リダイレクト ルールはすべて、ルーティング ルールの前に配置する必要があります。ルーティング ルールは、リクエストを他の URI に内部的にルーティングするものです。次に例を示します。

RewriteCond %{HTTP_HOST} ([^\.]*)\.domain\.com$ [NC]
RewriteRule (.*) /%1/$1 [L]

そのルール内部は、サブドメインと同じ名前のフォルダーにルーティングされます。このルールがリダイレクトの前にある場合、両方のルールが適用され、リダイレクトされた URI は になり/sub/ます。リダイレクト ルールの後にルーティング ルールを配置する必要があります。たとえばhttp://、フラグまたはフラグを持つすべてのルールですR

于 2013-08-19T18:22:13.420 に答える