2

各行がページを表すテーブルがあります。列titleにはページ名が保持されます。ページをロードすると、元の URL は次のようwww.mysite.com/?q=franceになりWHERE title = 'france'ました: 私は現在、htaccessを使用してURLをより使いやすくしています。のように: RewriteRule ^([a-zA-Z0-9#%@\s\(\)\[\]\-]+)$ page.php?q=$1、だから私は を使うことができますwww.mysite.com/france。問題は、タイトルに 'one & two' のようなアンパサンドが含まれている場合です。ルックアップは失敗します。私は試した

  1. htaccessに追加\&し、
  2. www.mysite.com/one %26 two

これらは両方とも失敗しますが、www.mysite.com/?q=one %26 two機能します。

これを「クリーン」な URL で動作させる方法はありますか?

ティア!

4

1 に答える 1

8

2つのこと:

  1. URI は mod_rewrite を通過する前にデコードされるため、 と照合するのではなく%26、単純に と照合する必要があります&
  2. back toはクエリ文字列に配置されているため、再エンコードする必要があるため、フラグを使用する必要があります。だから、このようなもの:&%26B

    # Add a "&"----------------v
    RewriteRule ^([a-zA-Z0-9#%@&\s\(\)\[\]\-]+)$ page.php?q=$1 [L,B]
    #                     Include the "B" flag -------------------^
    
于 2013-03-04T08:45:12.197 に答える