1

この質問は、SO に関する以前の回答から得た知識を組み合わせようとしているため、回答が与えられようとしているすべての基準を満たしていない限り、重複としてマークしないでください。

これが私がやりたいことです:
既存のサイトに変更を加えることができるように、サイトへの訪問者を一時的に .htaccess にリダイレクトしてクローン コピーにする必要があります。
したがって、次のニーズがあります:
1. すべてのユーザーのリクエスト /(.*) は、サブディレクトリ /website/$1 にリダイレクトする必要があります (つまり、誰かが /index.php をリクエストした場合、/website/index.php に移動する必要があります)
2 . . ユーザーが 3 つの特定の ips のいずれかからの場合、要求はリダイレクトされるべきではなく、ファイルに移動する必要があります (つまり、/index.php を要求した場合は、/index.php に移動する必要があります)
。 www の使用 (つまり、www の有無にかかわらず、リクエストは www.example.com/website にリダイレクトする必要があります)
4. 上記のリダイレクトは、何らかの一時的なリダイレクトである必要があります (通常のサイトは数日間のみダウンします)。

これは私の現在のコードです:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "http\:\/\/www\.example\.com\/website\/" [R=301,L]

基準 1、3、および 4 を満たしています。3 つの特定の IP アドレスをリダイレクトしないように調整する必要があります。

#2を組み込む方法について何か考えはありますか?

4

1 に答える 1

2

どうですか:

RewriteEngine On

# for #2
RewriteCond %{REMOTE_ADDR} !123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !123\.45\.67\.90$

# for #1 and #3 and #4
RewriteCond %{REQUEST_URI} !^/website/ [NC]
RewriteRule ^(.*)$ http://www.example.com/website/$1 [R=302,L]

#2の場合、123\.45\.67\.89etcをリダイレクトしたくないIPアドレスに置き換えます。

#4の場合、次のR=301ように変更する必要がありますR=302

于 2012-07-29T20:38:49.553 に答える