1

ドメイン root.com があるとします。htaccess に次の行を追加して、非 www を www にリダイレクトします。

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

サブドメインも持っています:demo.root.comなので、サブディレクトリroot/demoにhtaccessを追加し、サブディレクトリへの直接アクセスを避けるためにサブディレクトリをサブドメインにリダイレクトする行を追加しましたroot.com/demo または www.root.com/demo を使用すると、次のコードが追加されます。

RewriteCond %{http_host} ^root.com [nc]
RewriteRule ^(.*)$ http://www.root.com/$1 [L,R=301]
RedirectMatch 301 ^/demo/(.*)$ http://demo.root.com/$1

結果は次のとおりです。

  • 非 www をメイン ドメイン root.com の www にリダイレクトします。
  • サブディレクトリ /root/demo をサブドメイン demo.root.com にリダイレクトします。

問題は :

この url: root.com/demo (非 www バージョン) を使用しても、おそらく 2 つのリダイレクトがあるため、 demo.root.com にリダイレクトされません。

  • www以外からwwwへ
  • サブディレクトリからサブドメインへ

組み合わせがうまくいかないようです

私は何をしたいですか?

の組み合わせ:

  • サブドメインで問題なく、メインドメインを非 www から www にリダイレクトできる
  • サブディレクトリをサブドメインにリダイレクトする
4

1 に答える 1

0

これらの両方のルールをメインに保持しますDOCUMENT_ROOT/.htaccess

RewriteRule ^demo(/.*|)$ http://demo.root.com$1 [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

から既存のルールを削除しますdemo/.htaccess

于 2013-09-14T11:58:50.707 に答える