我开发了这个RewriteRule,它一直运行良好,直到我发现了一个问题。
这是规则:
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1/%2/%4.php -f
RewriteRule ^ /%1/%2/%4.php?id=%3 [QSA,L]
URL格式如下:/ home / service / ID / scriptname 请注意, ID 是动态的,并且在检查文件是否存在时,RewriteRule不会使用它。
但在我发现的这一个场景中,我使用的其中一个ID包含'%2F' - 解码后转换为正斜杠(/) - 由于某种原因,在休息时重写规则因为它认为还有另一个目录。
我的问题是,为什么%2F在RewriteRule中被解码,我该如何设计解决方案? - 最好不要快速破解或更改ID。
答案 0 :(得分:2)