NginX 中的 Wordpress 非 www 到 www 重定向循环

NginX 中的 Wordpress 非 www 到 www 重定向循环

我已成功在 NginX 上部署了我的 wordpress 网站。我需要 永久链接http://www.example.com/%postname%和 博客http://blog.example.com/%postname%。它将所有 www 流量重定向到非 www,但当我尝试通过取消注释下面为 NginX 编写的 mydomain 配置文件中的行来将其配置为将非 www 重定向到 www 时,浏览器抱怨重定向循环。

我的 global/restrictions.conf 是:
http://pastebin.com/cLfMv6jC
并且 global/wordpress.conf 是:
http://pastebin.com/Uc9KSqhh

带有服务器块的 NginX mydomain 配置文件如下:

server {
    server_name  _;
    return 301 $scheme://www.example.com$request_uri;
}

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

server {
    listen 80 default_server;
    listen [::]:80;

    root /usr/share/nginx/html/example.com;
    index index.php index.html index.htm;

    server_name www.example.com;

    include global/restrictions.conf;
    include global/wordpress.conf;

}

请指出我的错误。
[更新]事实上,我还有以下服务器块:

server {
    listen 80;
    listen [::]:80;
    root /usr/share/nginx/html/mydomain_test;
    index index.php index.html index.htm;

    server_name test.example.com;

    include global/restrictions.conf;
    include global/wordpress.conf;

}

答案1

我不明白你为什么使用server_name _。它曾经用于指定默认服务器,但你却将server_name www.mydomain.comstanza 设置为默认服务器(listen 80 default_server)。

我会按如下方式重写您的配置:

server {
    listen 80;
    listen [::]:80;

    server_name www.mydomain.com;

    root /usr/share/nginx/html/mydomain.com;
    index index.php index.html index.htm;

    include global/restrictions.conf;
    include global/wordpress.conf;

}

server {
    listen 80 default_server;
    server_name mydomain.com;
    return 301 $scheme://www.mydomain.com$request_uri;
}

如果上述修改不起作用,我会重点关注您的包含内容。通过创建一个简单的/usr/share/nginx/html/mydomain.com/test.html并修改第一节来隔离它们:

server {
    listen 80;
    listen [::]:80;

    server_name www.mydomain.com;

    root /usr/share/nginx/html/mydomain.com;
    index test.html

}

然后,通过访问www.mydomain.com和进行测试domain.com,看看是否两者都会将您引导至test.html您创建的。如果是,则深入研究这些包含的内容。

答案2

您的 wordpress 安装还能够将访问者重定向到它认为正确的 URL。它通过使用 php header() 函数指定 Location: 标头来实现这一点。因此,您可能会看到您的网站重定向到您告诉 nginx 去的地方,然后 wordpress 将其发回。

在您的 wp_options 表中,将名为“siteurl”和“home”的选项设置为 www.domain.com uri。

相关内容