【问题标题】:Wordpress causing "This webpage has a redirect loop" error remotelyWordpress 远程导致“此网页有重定向循环”错误
【发布时间】:2013-01-03 23:02:39
【问题描述】:

我有一个在开发中运行良好的 Wordpress 网站(mysite.dev),但是当我将它部署到我的远程服务器(mysite.com)时,它会抛出“此网页有重定向循环' 错误。

我可以在加载栏中看到浏览器一次又一次地尝试 www.mysite.com 然后是 mysite.com 然后是 www.mysite.com,但是我不确定这是否相关。

如果我的 Wordpress 数据库配置不正确,我会收到 建立数据库连接时出错消息,但是当一切设置正确时,它会在此重定向循环中中断。

我已更改数据库中的字段 (siteurl) 以反映远程设置 (http://mysite.com/wordpress)。

注意:除了 wp-config.phpindex.php.htaccess 之外,我的 wordpress 文件存储在我的根目录中名为 wordpress 的文件夹中。

有什么想法吗?

.htaccess 内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

index.php:

<?php
/**
 * @package WordPress
 */
define('WP_USE_THEMES', true);

require('./wordpress/wp-blog-header.php');
?>

【问题讨论】:

  • 嗯,可能是 .htaccess 有问题。请张贴其内容。你有一个错误的域重写。
  • 这是 only htaccess 文件吗?有更高级别的吗?
  • 这是根目录下的一个,而且似乎是唯一的一个,是的。

标签: php wordpress redirect


【解决方案1】:

在我的情况下,本地 - Openserver。

问题出现在地址中的大写字母中。例如,在站点设置中是http://local-Host,是大写字母导致了问题,因为整个地址被简化为小写字母-http://local-host,结果$redirect_url$requested_url不同canonical.php

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,答案是.htaccess 文件和那里的重定向。似乎我使用的主题/插件需要自己的代码,类似于 wordpress 网站上htaccess 的代码。我查看了插件,找到了它引用的代码,并在 htaccess 文件中对其进行了更改。现在可以了。

    【讨论】:

      【解决方案3】:

      请注意,使用 CloudFlare Flexible SSL 时也会出现无限重定向问题。要修复它,您需要安装以下插件:

      https://wordpress.org/plugins/cloudflare-flexible-ssl

      【讨论】:

        【解决方案4】:

        我遇到了完全相同的问题(迁移到新服务器后出现重定向循环)。

        但是配置值 siteurl 和 home 没有问题,.htaccess 文件也没有问题。我尝试了所有这些。而且添加到 URL 中的“www”也不是问题

        经过一些研究,我发现循环是由对 redirect_canonical 函数(在 wp-inclue/canonical.php 中)的无限调用引起的。 但这不是 wordpress 的错误。当您访问根 url 时,一些 PHP 配置以“错误的方式”设置了 $_SERVER['REQUEST_URI']。示例:在我的服务器上,当我转到 http://example.com/ 时,$_SERVER['REQUEST_URI'] 设置为 '/index.php' 而不仅仅是 '/' 这对于 redirect_canonical 来说是令人困惑的,因为这个函数总是尝试重定向到它知道的页面“更好”的 url。您网站根目录的更好的 url 是“/”。在我的服务器上,每次 redirect_canonical 尝试重定向到 '/' 都会失败,然后再次尝试,直到找到无限重定向循环。

        要更正此错误,您可以修改服务器配置 - 我个人不知道该怎么做,但我知道这是可能的 - 或者如果您无法更改,只需将此代码添加到 @ 987654322@:

        /**
         * avoid redirection loop in redirect_canonical if REQUEST_URI 
         * contains '/index.php' 
         **/
        
        /* remove the action set in the hook 'template_redirect' by wordpress */
        remove_action('template_redirect', 'redirect_canonical');
        
        /* set a custom action in the hook 'template_redirect' to check REQUEST_URI value */
        add_action('template_redirect', 'correct_redirect_canonical');
        
        /* Function to correct the behaviour of redirect_canonical */
        function correct_redirect_canonical(){
            if(strstr($_SERVER['REQUEST_URI'],'/index.php')===false){
                redirect_canonical();
            }
        }
        

        希望对你有帮助!

        【讨论】:

          【解决方案5】:

          虽然我发现这篇文章和解决方案真的很有帮助,因为这个问题让我发疯了,我花了很多时间才意识到。在我的情况下,它发生是因为我将文件移动到同一服务器内但使用另一个域,并且在完成所有配置和替换后,我无法查看页面并收到此错误。 在我的托管设置中,有一个首选域字段被设置为 domain.ltd(我试图更改它,但最后还是这样),而不是在 Settings->General wordpress 仪表板在没有 www..bum 的情况下设置最后一个值后,我将 WordPress 地址(URL)“mysite.com”和站点地址(URL)设置为“www.mysite.com”,现在一切正常。希望这对其他人有帮助

          【讨论】:

            【解决方案6】:

            首先我只是一个初学者,所以... 同时我认为我可能有这个问题的替代方案/捷径。

            我建议不要删除每个插件,然后一一重新安装它们

            这只是我的建议。

            马可·戴维德

            【讨论】:

              【解决方案7】:

              我的托管服务器设置迫使 mysite.com 访问 www.mysite.com,这就是问题所在。我关闭了此设置,现在一切正常,但我仍然想知道如何在打开此设置的情况下使其正常工作!

              【讨论】:

                【解决方案8】:

                此错误可能发生在两个地方之一,用户端或管理员端。

                当它发生在管理员端(wp-admin)时,你会发现你无法登录。

                第 1 步:使用 ftp 连接到您的博客并导航到 wp-content/plugins/ 目录,然后将所有插件下载到桌面上的文件夹中。 第 3 步:仍然在您的 FTP 程序中,删除 plugins 目录中的所有插件文件夹和 php 文件。你不想在这个目录中留下任何东西。 第 4 步:尝试登录您的博客。它应该可以让您毫无问题地登录。访问您博客的插件部分。这应该会加载很多错误,告诉您每个插件都因错误而被停用。还行吧。 第 5 步:使用您的 ftp 程序,您应该上传所有插件。上传后,您应该在 wordpress 中一一激活每个插件,然后访问 wp-admin/ 登录地址,以确保登录后它将通过您的博客。 第 6 步:当您激活插件并再次开始出现此错误时,您将知道是哪一个问题造成的。只需通过 ftp 删除该插件,然后开始寻找要使用的替代插件。

                如果这些步骤不能解决您的问题,您应该备份所有的 wordpress 文件,然后删除它们。您应该让他们为最新版本上传干净的 wordpress 文件,并尝试在没有上传主题或插件的情况下登录。登录后您可以稍后上传。

                如果继续报错,请清除浏览器缓存,用其他浏览器测试登录。

                如果一切都失败了,请联系您的虚拟主机或在 wordpress 支持论坛上打开一个帖子

                【讨论】:

                  【解决方案9】:

                  您是否在使用像 Redirection 这样的插件来跟踪 URL 更改? 这可能会创建一个循环,将 mysite.dev/page/ 重定向到 mysite.com/page/ 并将 mysite.com 重定向到 mysite.dev。 以前发生在我身上!

                  【讨论】:

                    【解决方案10】:

                    1.- 由于“我的 wordpress 文件存储在一个名为 wordpress 的文件夹中”,您必须像这样编辑 RewriteBaseRewriteRule

                    RewriteBase /wordpress/
                    RewriteRule . /wordpress/index.php [L]
                    

                    更新

                    2.- 尝试清除所有 cookie。这个简单的操作(通过 Firebug)有时可以解决我的这个问题。

                    更新 3

                    3.- 在你的根目录中试试这个 /index.php:

                    // index.php file in root directory
                    chdir('wordpress'); // change dir to WP
                    include 'index.php'; // execute WP with their normal `index.php`
                    

                    并像往常一样离开/wordpress 目录(其中包含正常的 index.php 和 .htaccess)。

                    我的意思是不要改变 WP 的正常 index.php 的任何一点,它是这样的:

                    <?php
                    /**
                     * Front to the WordPress application. This file doesn't do anything, but loads
                     * wp-blog-header.php which does and tells WordPress to load the theme.
                     *
                     * @package WordPress
                     */
                    
                    /**
                     * Tells WordPress to load the WordPress theme and output it.
                     *
                     * @var bool
                     */
                    define('WP_USE_THEMES', true);
                    
                    /** Loads the WordPress Environment and Template */
                    require('./wp-blog-header.php');
                    

                    【讨论】:

                    • 不幸的是,Wordpress 会为您处理所有这些。但是,我只是为了确定并尝试了相同的错误。
                    • @alex-coady 您是否尝试过使用不同的浏览器。还可以尝试清理所有 cookie。
                    • 我已尝试清除所有 Cookie,是的,所有其他浏览器中都显示相同的错误(我尝试过 Firefox、Chrome、Safari)。
                    • @alex-coady 答案已更新。我认为是从根目录执行 WP 的最佳解决方案。祝你好运...
                    • wordpress 目录中没有index.php。该文件位于我的根目录中。我认为问题实际上在于我的远程服务器 - 感谢您的建议!
                    猜你喜欢
                    • 1970-01-01
                    • 2012-09-22
                    • 2014-07-08
                    • 2014-09-22
                    • 1970-01-01
                    • 2014-09-27
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多