我已将我的网站从 http 重定向到 https。我想允许用户代理XYZ和XYZ 随便输入 http 和 https 版本。
现在虚拟主机如下所示:
server {
listen 80;
server_name example.com www.example.com;
rewrite ^/(.*)$ https://www.example.com/$1 permanent;
}
我该如何编辑它,以便允许包含 XYZ 的代理同时查看 HTTP 和 HTTPS?换句话说...如何禁用此类代理的重定向?
我试过
if ($http_user_agent ~* "^XYZ$") {
rewrite ^/(.*)$ https://www.example.com/$1 permanent;
}
但这似乎只重定向了 XYZ。但如果是 XYZ(不是严格的 XYZ,而是包含 XYZ),我需要禁用重定向...
答案1
使用 ~* 时,您尝试松散地匹配字符串,但您的正则表达式是 ^XYZ$,它表示只有当字符串以 XYZ 开头并以 XYZ 结尾时才匹配。这根本不是松散的。您在这里有点自相矛盾。
请参阅此处的文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location
您可能希望调整正则表达式以允许更多变化。从您的问题来看,我们很难知道您想要匹配什么。可能是这样的:
if ($http_user_agent ~* ".*XYZ.*") {
rewrite ^/(.*)$ https://www.example.com/$1 permanent;
}