.htaccessファイルにいくつかのRewriteRulesがあります。ただし、1つの特定のルールは、2つのルールの順序に関係なく、別の特定のルールを削除した場合にのみ実行されます。
優先度が「低い」と思われるルールは次のとおりです。
RewriteRule ^([0-9]+)$ /beta/forward.php?id=$1 [L]
そして、これが常に優先されるルールです:
RewriteCond %{HTTP_Host} ^domain1\.net$ [NC]
RewriteRule ^(.*)$ http://domain2.net/$1 [R=301,L]
Domain1とdomain2はどちらも、実際には同じWebサイトを指しています。したがって、両方のルールが.htaccessファイルにあり、私がアクセスするときはいつでも
http://domain1.net/123
2番目のルールが最初に実行され、最初に http://domain2.net/123 に、次に(ホスト名が2番目のルールに適合しなくなったときに)2つのリダイレクトが発生します。 )から http://domain2.net/beta/forward.php?id=123 。 2番目のルールを修正して、数字のみを含むURLに対して実行されないようにしましたが、stillが取得されるため、何か間違ったことをしている必要があります実行:
RewriteCond %{HTTP_Host} ^ domain1\.net$ [NC]
RewriteRule ^(.*[^0-9]+.*)$ http://domain2.net/$1 [R=301,L]
.htaccessファイルから2行を削除するだけで、リクエストをすぐに処理する最初のルールを取得できます。
どんな助けでも大歓迎です。
ルールは次の手順を示しています。
URLが数字のみの場合は、ベータURLに移動し、その後にそれらの数字を続けて停止します。
Domain1にアクセスする場合は、domain2の同じURLに移動して停止します。
L
が検出されるか、ルールが終了すると、処理は終了します。他に起こっていることは、ブラウザからの新しい接続です。これはおそらくあなたにとって混乱していることです—順序が重要であり、次に一致します。 L
は、問題が発生したときに問題を解決する必要があります。
_
RewriteEngine on
_
RewriteRule ^([0-9]+)$ /beta/forward.php?id=$1 [L]
#数値のみの場合は[L]の処理を終了します_
RewriteCond %{HTTP_Host} ^domain1\.net$ [NC]
_#domain1.netの大文字と小文字を区別しない一致の場合…
RewriteRule ^(.*)$ http://domain2.net/$1 [R=301,L]
#domain2.netにリダイレクトします。終了[L]
書き換えルールのフラグを確認する必要があると思います( http://httpd.Apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule )CフラグとLフラグの機能に注意してください。