nginx上的URL转发(重定向)只有-www& only-HTTPS基于WordPress永久链接

时间:2016-12-15 20:36:37

标签: php wordpress nginx

我一直在努力转发来自" http://example.com/ ..."," http://www.example.com/ ......"和" https://example.com/ ..." to " https://www.example.com/ ..."在我的nginx服务器上。

我使用默认网站网址" https://www.example.com/"运行WordPress软件并使用永久链接。

我当前的nginx配置文件如下所示:http://pastebin.com/MxHUNtCc

尝试将这些转发规则实施到nginx中,但我不知道如何支持WordPress永久网址。

感谢阅读。

克里斯

3 个答案:

答案 0 :(得分:1)

此外,您可以使用server_name指令和$host来设置重定向到特定方案。如果您只想重定向WWW子域,请使用以下代码。

server {
   listen 80;
   server_name www.example.com;
   return 301 https://www.example.com$request_uri;
}

我希望它适合你。

答案 1 :(得分:0)

您可以使用以下新服务器块...

来实现将http url永久重定向到https
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}

...并确保使用443端口和证书正确设置现有服务器块。

它应该可以正常工作,因为许多用户按照此处的建议使用WordPress:https://atulhost.com/secure-nginx-letsencrypt-ubuntu

答案 2 :(得分:0)

总共需要三个服务器块

  1. http://example.comhttp://www.example.com处理端口80上的重定向 https://www.example.comhttps://example.com
  2. 处理端口443上的重定向,从https://www.example.comhttps://www.example.com
  3. 在端口443上向http://example.com提供请求和重定向
  4. 以下示例是从您的pastebin

    修改的
    #
    # Server Block 1: Port 80 Redirection. 
    #
    server {
       listen 80;
       server_name example.com www.example.com;
       # Note that using "rewrite ^(.*)" is not optimal. 
       # See "pitfalls" link you already have at the top of your conf file.
       return 301 https://$host$request_uri;
    }
    
    #
    # Server Block 2: Port 443 Redirection from https://example.com.
    #
    server {
        listen 443 ssl spdy;
        listen [::]:443 ssl spdy;
        server_name example.com;
        ssl        on;
        ssl_certificate         /etc/nginx/SSL/public.pem;
        ssl_certificate_key     /etc/nginx/SSL/private.pem;
        return 301 https://www.example.com$request_uri;
    }
    
    #
    # Server Block 3: Port 443 Processing for https://www.example.com.
    #
    server {
        listen 443 ssl spdy;
        listen [::]:443 ssl spdy;
        server_name www.example.com;
        ssl        on;
        ssl_certificate         /etc/nginx/SSL/public.pem;
        ssl_certificate_key     /etc/nginx/SSL/private.pem;
        # Rest of your conf file follows
    

    一些笔记

    1. https://example.com的请求将命中服务器阻止1并重定向到https://www.example.com,并在被重定向到http://www.example.com之前由服务器块2处理并由服务器块3处理。这种双重定向是满足 HTTP Strict Transport Security 要求所必需的。
    2. https://www.example.com的请求将命中服务器块1,并且还会重定向到https://example.com,并将由服务器块3处理。
    3. https://www.example.com的请求将命中服务器块2并被重定向到https://example.com并将由服务器块3处理。请注意,证书检查在连接完成之前完成,IE,在任何之前重定向,如果您没有https://www.example.com的有效证书,用户将在其浏览器中收到警告消息。
    4. QDateTime::currentDateTime()的请求将命中服务器块3并在那里处理。