Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何处理.htaccess规则中的特殊字符?_Apache_Url_.htaccess_Url Rewriting - Fatal编程技术网

Apache 如何处理.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),然后在我的查询字符串标记变

在.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),然后在我的查询字符串
标记
变量中,我只得到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
取代。