php WordPress的nginx重定向循环

o2g1uqev  于 2023-05-21  发布在  PHP
关注(0)|答案(7)|浏览(182)

所以,昨天我有一个问题,如何安装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和apache 2根目录都指向“/var/www/wordpress”。静态文件(css,js)正在工作,如果它重要的话。
如何解决此问题?任何帮助是非常感谢!
感谢您的评分

baubqpgj

baubqpgj1#

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

remove_filter('template_redirect', 'redirect_canonical');

OP's answer中提供的链接:
Wordpress did infinite 301 redirect loop

trnvg8h3

trnvg8h32#

最后,找到了一个解决方案:
http://www.violato.net/blog/php/88-wordpress-did-infinite-301-redirect-loop
希望这能帮助其他和我有同样问题的人。
谢谢大家。

j8yoct9x

j8yoct9x3#

我在使用Nginx作为Apache的反向代理时遇到了类似的问题。
几个小时后,我发现这是由于Nginx将$_SERVER["REQUEST_URI"]设置为index.php而不是实际的URL,WordPress试图通过重定向到wp-includes/canonical.php中没有index.php的URL来删除index.php
对我来说,解决办法就是用这样的东西

proxy_pass http://111.111.111.111:8080$request_uri;

所以添加$request_uri修复了它。

6tqwzwtp

6tqwzwtp4#

过去我从Apache切换到Nginx时遇到了很多问题,当我清除Apache时,所有问题都解决了,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;
    }
}

我甚至没有改变任何东西在管理面板切换服务器时,它只是工作正常。

enxuqcxy

enxuqcxy5#

在我的例子中,重定向循环只影响wp-admin页面,所以我在行首添加了

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

并且仍然有效,再加上重定向规范继续在前端做它的工作!
我希望这对别人有帮助!

jucafojl

jucafojl6#

我遇到这个问题是因为我使用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;
cidc1ykv

cidc1ykv7#

这是一个使用WordPress Docker的Nginx解决方案
关键点是在proxy中加入“host”和“proto”

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/

相关问题