正则表达式与htaccess规则中的整个单词不匹配

时间:2016-07-20 08:50:49

标签: mod-rewrite

我正在试图弄清楚为什么这不起作用:

   RewriteRule ^search/(.*)-more([0-9]+).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1;nh=$2 [P,L]
   RewriteRule ^search/(.*).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1 [P,L]

使用示例:

前2个工作正常 - test被传递给查询参数。

但是,在第二个问题上 - 它会在%20处被截止...所以它不是通过test%20extra,而是通过test

我比较了我在另一台服务器上使用的类似规则,它与(。*)作为选择器工作正常...所以我不确定这里有什么不同!

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

唉......我明白了!它想要NC,L而不是P,L作为标志。所以:

RewriteRule ^search/(.*)-more([0-9]+).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1;nh=$2 [P,L]
   RewriteRule ^search/(.*).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1 [P,L]

需要:

RewriteRule ^search/(.*)-more([0-9]+).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1;nh=$2 [NE,L]
   RewriteRule ^search/(.*).html /cgi-bin/search.cgi?bool=and&substring=0&query=$1 [NE,L]