0

を使用するのはこれが初めてなので、ここでいくつかの基本的なことを誤解していると思いますmod_rewrite

次のことをお願いします。

blog.example.com
blog.example.com/
blog.example.com/index.php

リダイレクト先:

example.com/blog

ただし、他のすべてのケースでは何もしないでください。

blog.example.com/foobar
blog.example.com/wp-admin
blog.example.com/wp-admin.php

これは私の現在の.htaccessです:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} =blog.example.com
RewriteCond %{REQUEST_URI} ^|/|index\.php$
RewriteRule ^(.*)$ http://www\.example\.com/blog [QSA,L]

私は多くのバリアントを試しましたが、すべてのリクエストがリダイレクトされるか、リダイレクトされないかのいずれかになるたびに、mod_rewrite私が望むものではなく、間違いなく何かをしています。

関連するものがないかこの投稿をざっと読みましたが、問題は、経験不足のために微妙な事実を見逃していることだと思います. 誰かが私のエラーを親切に指摘してくれますか? SOに関する別の質問は必要ないことはわかっていますmod_rewriteが、これには本当に苦労しています。前もって感謝します。

4

1 に答える 1

1

これを試して:

RewriteEngine On
RewriteCond %{HTTP_HOST} =blog.example.com [NC]
RewriteRule ^/?(index\.php)?$ http://www.example.com/blog [QSA,R,L]

いくつかの基本的なポイント:

  1. 書き換えルールの2番目の部分は正規表現ではないため、ピリオドをエスケープする必要はありません。

  2. 私はRewriteCondの=Stringオプションに精通していませんでした。本日は教えていただきありがとうございます(正規表現が表示されなかったので心配でしたが、問題ないはずです)。ドメインの小文字と大文字の両方のバージョンを一致させるのに役立つため、ここに[NC]を追加します。

  3. 仮想ホストに適切なエイリアスとしてblog.example.comサブドメインが含まれていて、そのサブドメインにDNSが設定されていない限り、これは機能しません。

于 2012-10-08T15:36:40.353 に答える