如何处理.htaccess规则中的特殊字符?

时间:2009-07-14 10:42:35

标签: apache url .htaccess url-rewriting

在我的.htaccess文件中,我定义了以下规则,

RewriteRule t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]

如果我正在浏览http://example.com/videos/t/world+news/http://example.com/videos/t/events/

,则上述规则正常

但是当我正在浏览http://example.com/videos/t/business+%26+world/时(原始标记为:business& world),然后在我的查询字符串tag变量中,我只获得了业务。 “和;当我通过$_GET['tag']

获取可变数据时,世界不会出现

任何人都可以告诉上述规则中的问题在哪里吗?

2 个答案:

答案 0 :(得分:5)

尝试B flag以逃避反向引用:

RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [B,QSA]

修改如何:

RewriteRule ^([^&]*)&(.*)/$ $1\%26$2 [N,NE]
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]

第一条规则是将&替换为%26

答案 1 :(得分:0)

最后,我为您提供解决方案:

[
    { totalSales : 1234, totalDollar : "1234,56", ...},
    { totalSales : 2222, totalDollar : "232323,23", ...},
    ...
]