^/$
さまざまな正規表現 ( 、^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]
ここで、およびディレクティブRewriteBase
はRewriteEngine
必要ありません。 はRewriteEngine
、おそらく、コード ブロックの一部としてファイルの後半にすでに表示されています# BEGIN WordPress
(順序は重要ではありません)。
スラッシュの接尾辞に注意してください代替文字列です。これは必須URLの一部(空のURLパスは不可)を省略した場合は、後で別の方法で「修正」する必要があります。外部リダイレクトの場合は、ブラウザ「修正」するでしょうが、ここには「ブラウザ」がありません。
これは空のURLパスとindex.php
(mod_dirがディレクトリインデックスのサブリクエストを発行している場合)の両方に一致します。前にmod_rewriteはmod_proxy経由でリクエストを送信します。状態環境変数をチェックすることは、REDIRECT_STATUS
このインスタンスではプロキシを避けるために必要ですすべてWordPress のフロント コントローラーがすべてを に書き換えるためですindex.php
。この条件により、書き換えられたリクエストではなく、直接のリクエストのみが一致するようになります。
余談:あRewriteRule
パターンのようなはコンテキスト^/$
内では決して一致しません.htaccess
。これは、ディレクティブがサーバ(または仮想ホスト) コンテクスト。