Wordpress导致“此网页有一个重定向循环”错误远程

时间:2013-01-20 21:09:36

标签: php wordpress redirect

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

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

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

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

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

有什么想法吗?

.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');
?>

10 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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');

答案 2 :(得分:4)

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

配置值siteurl和home 不是问题,也不是.htaccess文件的问题。我尝试了所有这些。对于&#39; www&#39;而且也不是问题。已添加到网址

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

要更正此错误,您可以修改服务器配置 - 我不知道如何做到这一点,但我知道这是可能的 - 或者如果您无法更改它,只需添加此custom plugin中的代码:

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

希望它有所帮助!

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

您是否使用跟踪网址更改的Redirection这样的插件? 这可能创建了一个循环,它将mysite.dev/page/重定向到mysite.com/page/,将mysite.com重定向到mysite.dev。 发生在我之前!

答案 5 :(得分:0)

此错误可能发生在用户端或管理员端的两个位置之一。

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

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

如果这些步骤无法解决您的问题,则应备份所有wordpress文件,然后将其删除。您应该为最新版本上传干净的wordpress文件,并尝试登录,不上传任何主题或插件。您可以在以后登录后上传这些内容。

如果您继续收到错误,请清除浏览器缓存,测试使用其他浏览器登录。

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

答案 6 :(得分:0)

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

而不是删除每个插件,然后逐个重新安装所有插件,我建议首先删除已删除的插件,因为“resent problem = recent mod / plugins”...

这只是我的建议。

Marco Davide

答案 7 :(得分:0)

虽然我发现这篇文章和解决方案确实很有帮助,因为这个问题让我发疯,让我花了很多时间去实现。在我的情况下,它发生是因为我移动了相同的服务器内的文件但使用另一个域,并在完成所有配置和替换后,我无法查看页面并得到此错误。  在我的托管设置中,有一个首选域名已设置为domain.ltd(我试图更改它但最终离开了),而不是设置 - &gt;一般 wordpress仪表板在没有www..bum设置最后一个值后,我将WordPress地址(URL)“mysite.com”和站点地址(URL)设置为“www.mysite.com”现在一切正常。希望这有助于其他任何人

答案 8 :(得分:0)

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

问题出现在地址的大写字母中。例如,在网站设置中,http://local-Host是引起问题的原因是大写字母,因为整个地址都减小为小写字母-http://local-host,结果$redirect_url为与canonical.php中的$requested_url不同

答案 9 :(得分:-1)

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