我目前有 2 个服务器容器,1 个用于 http,另一个用于同一服务器但使用 https。我想使用Listen 80;
and合并这些容器Listen 443 ssl;
,这可行,但现在我需要重写一个不同的 URL:
location ^~ /wp-admin {
rewrite ^ https://domain.com$request_uri? permanent;
}
location ^~ /wp-login.php {
rewrite ^ https://domain.com$request_uri? permanent;
}
当 HTTP 和 HTTPS 组合时,这会导致无限位置循环。我需要更改模式,但无法让它工作:
location ~ ^http://domain\.com/wp-admin {
rewrite ^ https://domain.com$request_uri? permanent;
}
location ~ ^http://domain\.com/wp-login.php {
rewrite ^ https://domain.com$request_uri? permanent;
}
这不起作用,有人知道吗?
答案1
正如迈克尔·汉普顿所说,最好使用针对端口 80 和 443 的单独服务器 {} 块来实现这一点。
另一个解决方案是这样的:
location ^~ /wp-admin {
if ($server_port = 80) {
rewrite ^ https://domain.com$request_uri? permanent;
}
}