我有一个Wordpress网站在开发中非常有效(mysite.dev
),但是当我将它部署到我的远程服务器(mysite.com
)时,它会抛出'这个网页有一个重定向循环'错误。
我可以在加载栏中看到浏览器一次又一次地尝试www.mysite.com然后是mysite.com然后www.mysite.com,但是我不确定这是否是相关的。
如果我的Wordpress数据库配置不正确,我会收到错误建立数据库连接消息,但是当一切设置正确时,它会在这个重定向循环中中断。
我更改了数据库中的字段(siteurl
)以反映远程设置(http://mysite.com/wordpress
)。
注意:我的wordpress文件存储在我的根目录中名为wordpress
的文件夹中,wp-config.php
,index.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');
?>
答案 0 :(得分:5)
我的托管服务器设置迫使mysite.com访问www.mysite.com,这导致了问题。我关闭了这个设置,现在一切正常,但是我仍然想知道如何在启用此设置的情况下使其正常工作!
答案 1 :(得分:4)
1.-由于“我的wordpress文件存储在名为wordpress的文件夹中”,您必须像这样编辑RewriteBase
和RewriteRule
:
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 时,也会出现无限重定向问题。要修复它,您需要安装以下插件:
答案 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
文件中进行了更改。现在它有效。