6

我有一个在开发中运行良好的 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

索引.php:

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

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

10 回答 10

5

我的托管服务器设置迫使 mysite.com 访问 www.mysite.com,这导致了问题。我关闭了这个设置,现在一切正常,不过我仍然想知道如何让它在这个设置打开的情况下工作!

于 2013-01-21T12:25:08.837 回答
5

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

但这不是配置值 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 是“/”。在我的服务器上,每次 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();
    }
}

希望能帮助到你 !

于 2015-02-05T05:55:44.593 回答
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)。

我的意思是不要改变index.phpWP的任何正常情况,它是这样的:

<?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');
于 2013-01-20T21:16:45.563 回答
1

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

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

于 2015-03-20T07:34:13.130 回答
0

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

于 2013-01-20T22:04:20.843 回答
0

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

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

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

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

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

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

于 2013-01-20T23:23:08.000 回答
0

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

我建议不要删除每个插件然后一个一个地重新安装所有插件,而是从删除最后的插件开始,因为“重新发送的问题=最近的修改/插件”......

这只是我的建议。

马可·戴维德

于 2014-01-27T23:06:57.160 回答
0

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

于 2014-09-06T15:37:39.143 回答
0

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

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

于 2019-05-17T06:40:09.463 回答
-1

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

于 2015-04-20T11:19:55.113 回答