这个网页有一个重定向循环"远程错误


Wordpress causing "This webpage has a redirect loop" error remotely

我有一个Wordpress网站,在开发中工作得很好(在mysite.dev),但是当我将它部署到我的远程服务器(mysite.com)时,它抛出了'这个网页有一个重定向循环'错误。

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

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

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

注意:除了wp-config.php, index.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');
?>

我的托管服务器设置强制mysite.com到www.mysite.com,这导致了问题。我把这个设置关闭,现在一切都工作了,我仍然想知道如何使它的工作与这个设置打开,虽然!

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

但是不是配置值siteurl和home的问题,也不是.htaccess文件的问题。我都试过了。在URL后面加个www也没有问题。

经过一些研究,我发现循环是由无限调用redirect_canonical函数(在wp- include/canonical.php中)引起的。但这不是wordpress的bug。一些Php配置设置$_SERVER['REQUEST_URI']在一个"错误的方式",当你访问你的根url。示例:在我的服务器上,当我访问http://example.com/时,$_SERVER['REQUEST_URI']被设置为'/index.php'而不是'/'这让redirect_canonical感到困惑,因为这个函数总是尝试重定向到它所知道的页面的"更好"url。你网站的根url最好是"/"。在我的服务器上,每次redirect_canonical试图重定向到'/'时都失败了,然后再次尝试,直到找到一个无限重定向循环。

要纠正这个错误,你可以修改你的服务器配置——我个人不知道怎么做,但我知道这是可能的——或者如果你不能改变它,只要在自定义插件中添加以下代码:

/**
 * 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();
    }
}

希望它帮助!

1。-作为"我的wordpress文件存储在一个名为wordpress的文件夹中",你必须像这样编辑RewriteBaseRewriteRule:

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

2。-试着清洗所有的饼干。这个简单的操作(通过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');

注意,当使用CloudFlare Flexible SSL时,也可能发生无限重定向问题。要解决这个问题,你需要安装以下插件:

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

您是否使用了跟踪URL变化的重定向之类的插件?这可能创建了一个循环,它将mysite.dev/page/重定向到mysite.com/page/,并将mysite.com重定向到mysite.dev。我以前也遇到过!

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

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

步骤1:使用ftp连接到您的博客,导航到您的wp-content/plugins/目录,并将所有插件下载到桌面上的文件夹中。第三步:仍然在你的FTP程序中,删除所有插件文件夹和插件目录下的php文件。您不希望在此目录中留下任何内容。第四步:尝试登录你的博客。它应该能让你毫无问题地登录。访问你博客的插件部分。这将加载大量错误,告诉您每个插件由于错误而被停用。这没关系。第五步:使用你的ftp程序,你应该上传所有的插件。上传后,你应该在wordpress中一个接一个地激活每个插件,然后访问wp-admin/login地址,以确保一旦登录,它会将你传递到你的博客。第六步:当你激活一个插件并再次出现这个错误时,你就会知道是谁的错了。只需通过ftp删除该插件,并开始寻找替代插件使用。

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

如果仍然出现错误,请清除浏览器缓存,用其他浏览器测试登录。

如果这些都失败了,联系你的网站主机或在wordpress支持论坛上打开一个线程

首先我只是一个初学者,所以…同时,我认为我可能有一个替代/快捷方式来解决这个问题。

与其删除每个插件,然后一个接一个地重新安装它们,我建议从删除持续存在的插件开始,因为"最近的问题=最近的修改/插件"…

这只是我的建议。

Marco Davide

虽然我发现这篇文章和解决方案真的很有帮助,因为这个问题让我发疯,花了我很多时间才意识到。在我的情况下,发生这种情况是因为我将文件移动到同一服务器内,但使用另一个域,在完成所有配置和替换后,我无法查看页面并得到此错误。在我的主机设置中,有一个首选域文件被设置为domain。ltd(我试图改变它,但最后离开了它),然后在设置->一般 wordpress仪表板我有wordpress地址(URL)"mysite.com"和网站地址(URL)设置为"www.mysite.com"后设置最后一个值没有www..bum一切都好了。希望这对其他人有帮助

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

问题出现在地址的大写字母中。例如,在站点设置中,它是http://local-Host,这是引起问题的大写字母,因为整个地址被减少为小写字母- http://local-host,并且结果$redirect_url不同于$requested_url在canonical.php

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