2011-12-11 6 views
12

htaccess書き換えルールと組み合わせてgetパラメータに問題が発生しました。 以下はurlencode()のリンクです。 index.phpにリダイレクトするための書き換えルール、最後にindex.phpのprint_r($ _ GET)です。 ご覧のように、urlescapedアンパサンドは変数staticの値の一部ではなく、私の期待とは逆に変数seperatorとして解釈されます。 なぜですか?

初期リンク:

<a href="static/Game-Tech-%26-Arts-Lab">link</a> 

.htaccessファイル:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L] 

のindex.php:

Array ([static] => Game-Tech- [-Arts-Lab] =>) 
+0

がどのように '$ _SERVER [ "QUERY_STRING"]'というリクエストを探したのですか?また、 'index.php?static = ...'を手動で呼び出すと書き直しは行われませんか? – mario

+0

「index.php?static = Game-Tech-%26-Arts-Lab」を手動で参照すると、$ _SERVER ["QUERY_STRING"]は "[QUERY_STRING] => static = Game-Tech-& -Arts-Lab " – kontur

答えて

23

ああ、大丈夫。面白い。そのアンパサンドを特に逃げないようにする特別な解決策があるようです。 [B] flag for Rewriterulesを使用します。

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B] 

これは$1プレースホルダを補間する際に特殊文字をURLENCODEすることになっています。それはApache 2.2でしか動作しますが、私は信じています。

見つかり数参照:

+0

ああ、それはニュースです!それだけでそれを修正した。私はそれらの書き換えフラグをもう少し学ばなければならないでしょう - ヘルプmarioに感謝します! – kontur

+0

そのことについても知らなかった。それは新しい。 – mario

+0

素晴らしい - ありがとう! – Simeon

関連する問題