我正在尝试将旧的ssl域重定向到新的ssl域。但它正在向我发送重定向循环。
我在nginx虚拟主机中试过这个配置。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com old-domain.com;
rewrite ^ https://www.example.com$request_uri permanent;
}
server {
#SSL Configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
root /home/username/example/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com old-domain.com;
rewrite ^ https://www.example.com$request_uri permanent;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
请指导我如何解决此问题。
答案 0 :(得分:0)
在您的问题中,第二个rewrite
语句导致重定向循环。正确的解决方案是将server
块拆分为两个并从一个块重定向到另一个,就像从http
重定向到https
一样。您可以使用第一个server
块来实现此目的。
带server
的{{1}}块不需要default_server
指令,因为它无论如何都会响应所有不匹配的服务器名称。有关详细信息,请参阅this document。
假设这些是此配置中唯一的server_name
服务器,并且两个https
块共享相同的SSL配置(如您的评论所示),则可以将片段文件移到上方以便< em>两个server
块继承了。
最后,主server
块中的server_name
指令仅列出要重定向的不的服务器名称。
例如:
server