.htaccess - mod_rewrite NE标志-在URL中对特殊字符进行编码何时有帮助?

标签 .htaccess mod-rewrite url-rewriting url-encoding

我一直在查看mod_rewrite中的[NE](noescape)标志。经过一番思考,当我不想使用该标志时,我无法弄清楚情况。这意味着,几乎在每个RewriteRule中都保持启用该标志似乎最有帮助。在某些情况下,不调用此标志导致了我的问题。

我处理的大多数规则都是HTTP重定向([R]),而不是通过。

有人会告诉我们什么时候使用mod_rewrite编码URL会有所帮助吗?

启用此标志是一般的好习惯,还是使用默认行为允许mod_rewrite转义这些特殊字符?为什么?

最佳答案

如果查看source code for mod_rewrite,您会注意到,如果启用了proxy-nocanon,它将设置一个noescape标志。

revision where that line was first added中,它还包含以下注释:


确保mod_proxy_http不能规范化URI,并在mod_proxy_http:proxy_http_canon()的文件名中保留任何查询字符串(可能是qsappend'd)


接下来,如果您阅读mod_proxy documentation,则会看到以下有关nocanon的内容:


通常,mod_proxy会规范化ProxyPassed URL。但这可能与某些后端(特别是那些使用PATH_INFO的后端)不兼容。可选的nocanon关键字可以禁止这种情况,并将URL路径“原始”传递到后端。请注意,这可能会影响后端的安全性,因为它取消了针对代理提供的基于URL的攻击的常规有限保护。


我可能会弄错,但这对我来说意味着在mod_proxy中使用nocanon(在mod_rewrite中通过扩展名noescape)具有潜在的安全影响。这可以解释为什么默认情况下禁用它,甚至认为在大多数情况下启用它似乎更有用。

关于.htaccess - mod_rewrite NE标志-在URL中对特殊字符进行编码何时有帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279470/

相关文章:

php - .htaccess 从站点根目录重定向到公用文件夹,在 URL 中隐藏 "public"?

php - .htaccess 文件更改 url 字符串在某些页面上不起作用

apache - 此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误

.htaccess - 重写 url 以隐藏真实页面路径

Nginx重写 "directory"语言来查询字符串

url - 用于 SEO 的 Cakephp url 自定义

javascript - 如何使用 Apache 在服务器端压缩所有 JavaScript 文件?

apache - SSL 证书(让我们加密)不适用于所有服务器名称

.htaccess - mod_rewrite 所有 robots.txt 请求到默认文件,服务器范围

apache - 移动网站的问题