2

.htaccess ファイルに次のコード行があります。

RewriteRule ^mypage/(.+)/$ mypage.php?a=$1

この書き直しルールは、ほとんどの場合機能します。ただし、のようなパラメーターを渡そうとするC++と、mypage/C%2B%2B/正しく機能しません。...に移動する必要がありmypage.php?a=C%2B%2Bますが、代わりに次のように見えるmypage.php?a=c++ため、PHP コードは次の値を認識します。a=c<space><space>

RewriteRule を更新して、16 進数のコーディングを書き換えられた url に渡すにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

1

トリックはBflagを使用することです。マニュアルに従って:

[B] フラグは、変換を適用する前に英数字以外の文字をエスケープするよう RewriteRule に指示します。

詳細については、こちらの doc を参照してください

変更したルールは次のようになります。

RewriteRule ^mypage/(.+?)/?$ mypage.php?a=$1 [L,QSA,NC,B]
于 2013-07-11T11:34:45.463 に答える
0

よく検索した結果、別の StackOverflow 投稿内に答えが見つかりました: mod_rewrite & Apache を使用して特殊文字をエンコードする方法は?

助けてくれてありがとう。

于 2013-07-11T11:21:25.600 に答える