Wordpress nginx redirect loop



所以,昨天我有一个问题,如何在"/root"目录中安装wordpress。我在那一次不是很成功,我放弃了那一次。

所以,现在wordpress

位于"/var/www/wordpress"(所以它在单独的文件夹下)文件夹下(如果重要的话,我使用Ubuntu 12.04 LTS)。

我的问题是,在我配置了所有内容(一切都像魅力一样工作)之后,我被重定向到管理面板页面。一切都很好,直到我试图访问博客的那一刻。

我的博客的URL地址是:"blog.mysite.com"。这就是我使用NGINX的原因,因为我在一台服务器上有两个不同的应用程序(和环境),我需要区分它们。

所以,事实是:blog.mysite.com/wp-admin(/wp-login.php)完全正常工作,但是当我访问首页:blog.mysite.com 时,它一直告诉我有一个无休止的重定向循环(根据nginx访问日志文件的301重定向)。

在管理面板中,我将"WordPress地址(URL)"和"站点地址(URL)"设置为:"http://blog.mysite.com"。将它们中的任何一个修改为其他内容,例如:"http://blog.mysite.com/wordpress"根本没有帮助!

".htaccess"文件是空的,但我使用的是默认的永久链接,所以应该不是问题(但是,我不确定)。

nginx和apache2根指令都指向"/var/www/wordpress"。静态文件(css,js)正在工作,如果它很重要的话。

如何解决此问题?任何帮助都非常感谢!

提前谢谢你!

不是最漂亮的修复,但删除主题functions.php文件中的重定向过滤器对我有用。

remove_filter('template_redirect', 'redirect_canonical');

来自OP答案中提供的链接:
WordPress做了无限的301重定向循环

最后,找到了一个解决方案:

http://www.violato.net/blog/php/88-wordpress-did-infinite-301-redirect-loop

希望这能帮助其他与我有相同问题的人。

谢谢大家。

我在使用 Nginx 作为 Apache 的反向代理时遇到了类似的问题。

几个小时后,我发现这是由于 Nginx 将$_SERVER["REQUEST_URI"]设置为index.php而不是实际的 url 引起的,并且 Wordpress 试图通过重定向到没有index.php wp-includes/canonical.php的 url 来删除index.php

我的解决方案是使用这样的东西,

proxy_pass http://111.111.111.111:8080$request_uri;

所以添加$request_uri修复了它。

过去从Apache切换到Nginx时,我遇到了很多问题,当我清除Apache时,这些问题都解决了,这在某种程度上干扰了Nginx并给每个服务器带来了问题。以下是我对Nginx的wordpress配置,根据Nginx和Wordpress指南

server {
    listen 80;
    server_name blog.mysite.com;
    root /var/www/wordpress;
    index index.php;
    charset utf-8;
    location / {
      try_files $uri $uri/ /index.php?$args;
    }
    location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off; log_not_found off; expires max;
    }
    location ~ .php$ {
        try_files $uri /index.php;
      fastcgi_split_path_info ^(.+.php)(/.+)$;
        # CHANGE THE LINE ABOVE IF NEEDED
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

切换服务器时,我什至不必在管理面板中更改任何内容,它工作正常。

就我而言,重定向循环仅影响 wp-admin 页面,所以我在行首添加了

if (is_admin) remove_filter('template_redirect', 'redirect_canonical');

并且仍然有效,而且重定向规范在前端继续工作!

我希望这对其他人有所帮助!

我遇到了这个问题,因为我使用 nginx 转发请求,但 nginx 没有保留 HOST 标头。

一旦我在location块下添加了这些值,事情就开始按预期工作。

    # Set proxy headers for the passthrough
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # Let the Set-Cookie header through.
    proxy_pass_header Set-Cookie;

这是使用 wordpress docker
的 nginx 解决方案。关键点是将"主机"和"原型"添加到代理中

location / {
    try_files $uri @apache;
}
location @apache {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $host;
    proxy_pass http://wordpress:80;
}

引用:https://azdigi.com/blog/en/website-tutorials/wordpress-en/how-to-install-wordpress-with-docker-compose-nginx-apache-and-ssl-2/

最新更新