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. 我遇到的问题是标题有一个&符号,比如“一和二”。查找失败。我试过

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

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

有什么方法可以让我使用“干净”的网址吗?

蒂亚!

4

1 回答 1

8

两件事情:

  1. URI 在通过 mod_rewrite 之前被解码,所以你不想匹配反对%26,你只想匹配反对&
  2. 您现在需要将back重新编码为,因为它被放置在查询字符串中,因此您需要使用该标志。所以是这样的:&%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 回答