Apache 如何处理.htaccess规则中的特殊字符?
在.htaccess文件中,我定义了以下规则Apache 如何处理.htaccess规则中的特殊字符?,apache,url,.htaccess,url-rewriting,Apache,Url,.htaccess,Url Rewriting,在.htaccess文件中,我定义了以下规则 RewriteRule t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA] 如果我正在浏览http://example.com/videos/t/world+新闻/或http://example.com/videos/t/events/ 但是当我浏览http://example.com/videos/t/business+%26+world/(这里的原始标记是:business&world),然后在我的查询字符串标记变
RewriteRule t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]
如果我正在浏览http://example.com/videos/t/world+新闻/
或http://example.com/videos/t/events/
但是当我浏览http://example.com/videos/t/business+%26+world/
(这里的原始标记是:business&world),然后在我的查询字符串标记
变量中,我只得到business当我通过$\u GET['tag']
有人能告诉我上述规则中的问题在哪里吗???请尝试逃避反向引用:
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [B,QSA]
编辑这个怎么样:
RewriteRule ^([^&]*)&(.*)/$ $1\%26$2 [N,NE]
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]
第一条规则是将&
替换为%26
尝试退出反向引用:
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [B,QSA]
编辑这个怎么样:
RewriteRule ^([^&]*)&(.*)/$ $1\%26$2 [N,NE]
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]
第一条规则是将
&
替换为%26
最后,我为您提供了一个解决方案:
RewriteRule ^t/([^/.]+)/$ /videos/tag.php?tag=$1 [QSA,L]
最后,我为您提供了一个解决方案:
RewriteRule ^t/([^/.]+)/$ /videos/tag.php?tag=$1 [QSA,L]
它不起作用。当我添加[B,QSA]时,它会给我“500内部服务器错误”,没有这个错误,只有[QSA]工作正常??我想这个标志是在Apache 2中引入的。好吧,但是我用这个配置运行我的网站
Apache/2.2.3(CentOS)
,还有一件事就是你的新代码不起作用了?不知道hwy,但在添加%26规则后,它只显示一个空白页。还有一件事,您的新规则将仅替换&
,或者它的工作原理与B
标记您以前建议的相同。只要URL路径中存在&
,则应应用第一条规则。因此,每个&
都将被%26
所取代。它不起作用。当我添加[B,QSA]时,它会给我“500内部服务器错误”,没有这个错误,只有[QSA]工作正常??我想这个标志是在Apache 2中引入的。好吧,但是我用这个配置运行我的网站Apache/2.2.3(CentOS)
,还有一件事就是你的新代码不起作用了?不知道hwy,但在添加%26规则后,它只显示一个空白页。还有一件事,您的新规则将仅替换&
,或者它的工作原理与B
标记您以前建议的相同。只要URL路径中存在&
,则应应用第一条规则。因此,每个&
都将被%26
取代。