存在%mark时忽略.htaccess规则

时间:2013-12-21 02:54:49

标签: apache .htaccess mod-rewrite

我有以下重写规则:

RewriteRule ^ places /([^ /] +)$ PlaceD.php?LF = F& LFC = Place& PlaceID = $ 1

但是当我按如下方式调用URL时(当%mark存在时),它将被忽略:

http://mydomain/places/sri-maha-bhodi-%2F-bodiya

但是以下作品(没有%标记):

http://mydomain/places/sri-maha-bhodi-2F-bodiya

我应该如何更改重写规则?

1 个答案:

答案 0 :(得分:0)

Apache可能正在编码%2F,然后与RewriteRule不匹配。这里有一些事情,但基本的是不允许在URL中传递正斜杠。为了完成这项工作,您需要设置AllowEncodedSlashes NoDecode。这不能在.htaccess文件中完成,必须在配置中完成。您可能还需要在重写规则中设置另一个标志。

RewriteRule ^places/([^/]+)$ PlaceD.php?LF=F&LFC=Place&PlaceID=$1 [B]

来源:
Rewrite rule & escaping (encoded) forward slashes within URL
AllowEncodedSlashes Directive
B (escape backreferences)