使用$request_uri取代正则
原文地址
- 更多nginx文档
- 更多linux相关文档
解释说明
- 使用内置的
$request_uri,我们可以有效地避免任何捕获或匹配操作(cpu计算),一般正则批量会增加CPU开销,从而降低系统整体性能 - 当规则为变换
Host时(URI不变),直接使用$request_uri拼接新host更加高效。 -
$request_uri的值总是从客户端接收到的原始URI(带参数的完整原始请求URI),与$URI指令相比不受任何规范化的约束 - 如果你需要匹配
URI和它的查询字符串,可以在map指令中使用$request_uri - 如果不加思考地使用
$request_uri会导致许多奇怪的行为。例如,在错误的地方使用$request_uri可能会导致URL编码字符变成双编码。
所以大多数时候你应使用$uri,由于它是标准化的。
样例
- 不提议实现方式
# 1)
rewrite ^/(.*)$ https://example.com/$1 permanent;
# 2)
rewrite ^ https://example.com$request_uri permanent;
- 提议实现方式
return 301 https://example.com$request_uri;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...

