1

いくつかの興味深い mod_rewrite ルールを必要とする前に遭遇したことのない状況があり、誰かが同様の構成で同じことを達成しようとしている例を見つけることができません。

現在、同じドキュメント ルートを共有するように構成されている 2 つのドメイン名があります。このドキュメント ルートは動的な php アプリケーションであり、着信ホスト名に基づいて、そのドメインに固有のコンテンツを表示します。

例のドメインは次のとおりです。

www.example1.com

www.example2.co.uk

(一方は TLD であり、もう一方はそうではありません)

このアプリケーションに加えて、2 つのドメイン名のそれぞれに 1 つずつ、2 つの wordpress インストールがあります。ここでは wordpress MU を使用していないため、最初に wordrpass フォルダーを非表示にし、次に HTTP_HOST に基づいて正しいフォルダーに要求を提示するために、いくつかの凝った書き直しが必要です。

現在、私は以下を持っています:

RewriteRule ^wp-content(.*) wordpress/example1$1 [L]
RewriteRule ^wp-admin(.*) wordpress/example1/wp-admin$1 [L]
RewriteRule ^wp-login.php$ wordpress/example1/wp-login.php [L,R=301]

コンテンツ固有のページについても同様のルールがあります。

これは、単一のワードプレスのインストールではうまく機能しますが、明らかに2番目のインストールでは機能しません。ここでやりたかったことは、次のようなものでした:

RewriteRule ^wp-admin(.*) wordpress/${HTTP_HOST}/wp-admin$1 [L]

ただし、www を削除する必要があります。${HTTP_HOST} 変数の .com (または www. と .co.uk )

これを達成する方法またはより良いアプローチに関する提案をいただければ幸いです。

4

1 に答える 1

0

RewriteCond を使用して HTTP_HOST のパターンをチェックし、そのパターンの一部をキャプチャできます。

例えば:

RewriteCond %{HTTP_HOST} ^(?:www\.)?([a-zA-Z0-9_-]+)\.(?:com|co\.uk)$
RewriteRule ^wp-admin(.*) wordpress/%1/wp-admin$1 [L]

上記の RewriteCond ディレクティブは、HTTP_HOST が ".com" または ".co.uk" で終わり、オプションで "www." で始まるドメイン パターンに適合するかどうかを確認します。存在する場合は、ドメイン名の興味深い部分をキャプチャします。

次に、RewriteRule (RewriteCond が一致した場合にのみ起動) は、%1後方参照を使用して RewriteCond パターンのキャプチャされた部分を参照できます。

上記の RewriteCond で使用したパターンは、ニーズに完全には合わないかもしれませんが、RewriteCond によってキャプチャされたパターンへの後方参照を使用できることを理解すれば、これを使用して必要な効果を得るのは簡単です。 .

于 2013-07-02T12:45:11.497 に答える