URL中的htaccess和&符号

时间:2013-03-04 08:15:52

标签: regex .htaccess url url-rewriting

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

  1. \&添加到htaccess,然后
  2. www.mysite.com/one%26 two
  3. 虽然www.mysite.com/?q=one %26 two确实有效,但这两个都失败了。

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

    TIA!

1 个答案:

答案 0 :(得分:7)

两件事:

  1. URI在通过mod_rewrite之前被解码,因此您不希望与%26匹配,只想与&匹配。
  2. 您现在需要重新编码 &%26,因为它被放置在查询字符串中,因此您需要使用{{ 1}}标志。所以像这样:

    B