我有以下重写规则:
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
我应该如何更改重写规则?
答案 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)