Apache リライトプロキシのみのホームページ

Apache リライトプロキシのみのホームページ

^/$さまざまな正規表現 ( 、^index.php$、 )を試して、^$を通じて WordPress ウェブサイトのホームページだけを書き換え/プロキシしました.htaccess。記録によると、私はこれを実現するために適切なモジュールをロードしており、特定の正規表現を使用して他のパスに対してこれを行うことができますが、ホームページだけは実行できません。他の回答では、 が機能する^$と示されています^/$が、私の環境では機能しません。ホームページだけをターゲットにするにはどうすればよいですか?

RewriteEngine On
RewriteBase /
RewriteRule ^$ http://some-other-domain.com [P]

最終目標は、ホームページのみに別の Web サイトのページを提供することです。もっと良い方法があるかもしれません。

答え1

代わりに、ファイルの先頭に次のようなものを追加してみてください.htaccess前にWordPress フロントコントローラー:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ http://some-other-domain.com/ [P]

ここで、およびディレクティブRewriteBaseRewriteEngine必要ありません。 はRewriteEngine、おそらく、コード ブロックの一部としてファイルの後半にすでに表示されています# BEGIN WordPress(順序は重要ではありません)。

スラッシュの接尾辞に注意してください代替文字列です。これは必須URLの一部(空のURLパスは不可)を省略した場合は、後で別の方法で「修正」する必要があります。外部リダイレクトの場合は、ブラウザ「修正」するでしょうが、ここには「ブラウザ」がありません。

これは空のURLパスとindex.php(mod_dirがディレクトリインデックスのサブリクエストを発行している場合)の両方に一致します。前にmod_rewriteはmod_proxy経由でリクエストを送信します。状態環境変数をチェックすることは、REDIRECT_STATUSこのインスタンスではプロキシを避けるために必要ですすべてWordPress のフロント コントローラーがすべてを に書き換えるためですindex.php。この条件により、書き換えられたリクエストではなく、直接のリクエストのみが一致するようになります。

余談:RewriteRule パターンのようなはコンテキスト^/$内では決して一致しません.htaccess。これは、ディレクティブがサーバ(または仮想ホスト) コンテクスト。

関連情報