URL中的htaccess和&符号

Phi*_*hil 2 regex url .htaccess url-rewriting

我有一个表,每行代表一个页面.该列title保存页面名称.加载页面时,原始URL看起来像这样:www.mysite.com/?q=france然后我进行快速数据库查找WHERE title = 'france',就是这样.我现在正在使用htaccess使网址变得更友好.像这样:RewriteRule ^([a-zA-Z0-9#%@\s\(\)\[\]\-]+)$ page.php?q=$1,所以我可以使用www.mysite.com/france.我遇到的问题是标题有一个&符号,比如'one&two'.查找失败.我试过了

  1. 添加\&到htaccess,和
  2. www.mysite.com/one%26二

这两个都失败了,虽然www.mysite.com/?q=one %26 two确实有效.

有没有办法让我使用"干净"的网址?

TIA!

Jon*_*Lin 8

两件事情:

  1. URI在通过mod_rewrite之前被解码,所以你不想匹配%26,你想简单地匹配&.
  2. 现在,您需要重新编码&恢复%26,因为它被放置在查询字符串,所以你需要使用的B国旗.所以像这样:

    # Add a "&"----------------v
    RewriteRule ^([a-zA-Z0-9#%@&\s\(\)\[\]\-]+)$ page.php?q=$1 [L,B]
    #                     Include the "B" flag -------------------^
    
    Run Code Online (Sandbox Code Playgroud)