2

さて、vhost ブロックには 2 つの個別の mod-rewrite ルールがあります。最初のルールは、顧客が example.com/1234.html などのアフィリエイト URL から入ってきた場合にオフサイトにリダイレクトし、2 番目のルールは URL に常に www.example.com のような www ドットを含めるよう強制します。

# Affiliate Links
RewriteRule ^([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

# Ensure we are always on www dot
RewriteCond %{HTTP_HOST} ^example\.loc [NC]
RewriteRule (.*) http://www.example.com$1 [R=301,L]

ルール自体はうまく機能します。問題は、最初のルールが適用された場合、すぐにリダイレクトしたいのですが、常に優先されるため、2 番目のルールが一番上に持ち上げられているように見えます。これらが順番に実行されるようにするには、何を変更する必要がありますか?

4

1 に答える 1

0

これは vhost ブロックにあると述べました。そのコンテキストでは (.htaccess ファイルなどとは対照的に)、URL は常に「/」で始まります。

したがって

 RewriteRule ^([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

代わりに

 RewriteRule ^/([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

(つまり、先頭にスラッシュを付けて)、それ以外の場合は何にも一致しません。

于 2013-12-19T15:37:17.380 に答える