2

ユーザーに続行するかキャンセルするかを確認するページがあり、そのために書き換えルールを使用します。

RewriteRule ^click/(.+)$ aclick.php?url=$1 [B]

URL に疑問符がある場合に問題が発生します。例えば:

http://example.com/click/yahoo.com/mobile/?s=ladygaga

私の目標は、この URL を次のように書き換えることです。

http://example.com/aclick.php?url=yahoo.com/mobile/%3fs=ladygaga

続行ボタンが「http://yahoo.com/mobile/?s=ladygaga」に進むように

ただし、続行ボタンは「http://yahoo.com/mobile/」にリンクされているだけです。

これを修正するアイデアはありますか?

4

1 に答える 1

2

次のように使用%{QUERY_STRING}します。REDIRECT_QUERY_STRINGの代わりに参照する必要がありQUERY_STRINGます。

RewriteRule ^click/(.+) aclick.php?url=$1?%{QUERY_STRING} [B,L]

Bflag は文字列を過度にエスケープします。にアクセスするhttp://example.com/click/yahoo.com/mobile/?s=ladygagaと、クエリ文字列は になりますurl=yahoo%2ecom%2fmobile%2f?s=ladygaga。(悪影響を与えるものではありません。)

URL にクエリ文字列がない場合、冗長な「?」クエリ文字列の末尾に追加されます。これを防ぐには、次を使用しますRewriteCond

# If URL have any query string, then
RewriteCond %{QUERY_STRING} .
RewriteRule ^click/(.+) aclick.php?url=$1?%{QUERY_STRING} [B,L]
# otherwise,
RewriteRule ^click/(.+) aclick.php?url=$1

次のように簡単に書くことができます。

RewriteRule ^click/(.+) aclick.php

プログラム aclick.php は、環境変数 、などを参照できREQUEST_URIます。REDIRECT_URLQUERY_STRING

于 2012-12-13T12:13:58.837 に答える