1

URL の書き換えに関する問題が発生しています。Apache の mod rewrite を使用して URL を書き換えています。たとえば、URLを書き換えます

  • www.website.com/some/path/
  • request.php?string=some/path/.

次に、この URL に対する特定の応答を表示します。現在、私の書き換えルールは次のようになっています。

RewriteRule ^([a-z_/\?]+)$ request.php?string=$1

しかし、URL を持っていてwww.website.com/some/data/?id=12&name=Johnそれを書き換えると、問題が発生しますrequest.php?string=some/data/?id=12&name=John。この例では、別の疑問符が PHP を混乱させているようです。$_GET['string']request.php で取得しようとすると、次のようになりますsome/data/

さらに参考までに、Gmail はその URL で同様のことを行います。
https://mail.google.com/mail/?ui=1&shva=1

4

1 に答える 1

5

(マリオとして) QSA フラグ (Query String Append)を調べることをお勧めします。さらに、正規表現の文字クラスから疑問符を取り出します。

RewriteRule ^([a-z_/]+)$ request.php?string=$1 [L,QSA]
于 2012-04-10T20:11:44.877 に答える