Mod重写映射文件未返回正确结果

时间:2015-07-17 20:08:34

标签: apache mod-rewrite

我在mod重写中使用以下代码。我有一个我之前设置的搜索参数变量,并在映射文件的重写条件中使用。 Condition要求map文件返回一个结果,然后我在重写规则中使用相同的mapfile,它返回并清空字符串。

 RewriteCond  ${root301:%{ENV:SEARCHURL2}|NOT-FOUND} !(^$|NOT-FOUND) [NC] 
RewriteRule ^(.*)$ /Page1?search2=${root301:%{ENV:SEARCHURL2}} [QSA,NE,R=301,L]     

因此,例如http://mysite/root1假设转到http://mysite/page1?search2=results,但最终只会转到http://mysite/page1?search2=而没有搜索参数。如果地图条件不满意,重写就不会发生?我正在使用已编译的地图文件,我看到正确编译的字典。

1 个答案:

答案 0 :(得分:0)

我意识到我遇到的问题是我实际上有两个类似的重定向,一个正在寻找没有正斜杠的网址,但是当我复制第一个时,我忘了将尾随正斜杠添加到重定向规则,如下所示。因此搜索条件不相同,所以当然它没有工作

RewriteCond $ {root301:%{ENV:SEARCHURL2} / | NOT-FOUND}!(^ $ | NOT-FOUND)[NC] RewriteRule ^(。*)$ / Page1?search2 = $ {root301:%{ENV:SEARCHURL2}} [QSA,NE,R = 301,L]