字母'd'对我的htaccess rewriterule是致命的?

时间:2018-01-20 04:30:50

标签: regex .htaccess mod-rewrite

我很乐意承认,.htaccess不是我最大的力量,特别是regex可能涉及的地方。 (我变得越来越好,但仍然在那里。)无论如何,基于这个Git on common htaccess commands,我在htaccess中包含了以下内容:

RewriteRule ^/?Search/([^/d]+)/([^/d]+)/?$ Search.html?searchvariable=$1&searchnumber=$2 [L,QSA]

现在,这个地址

http://example.com/Search/Foo/12

将显示包含12个条目的搜索页面。

但是这......

http://example.com/Search/doo/12

每次都会404。事实上,在我的搜索部分中, d 的任何地址都会404

我猜这是由于([^/d]+),但我认为(通过正则表达式)意味着任何数字或单词都带有/d,但也许它是被视为 not d

我如何重写它,所以它是任何变量,甚至包含字母d的变量?

1 个答案:

答案 0 :(得分:1)

冒险...... 重写了

RewriteRule ^/?Search/([^/d]+)/([^/d]+)/?$ Search.html?searchvariable=$1&searchnumber=$2 [L,QSA]

as

RewriteRule ^/?Search/([^/]+)/([^/]+)/?$ Search.html?searchvariable=$1&searchnumber=$2 [L,QSA]

它工作正常。不知道为什么我工作的例子包括随机的......好吧。