在wp-admin或wp-login.php上重定向循环

时间:2013-01-26 00:37:57

标签: wordpress redirect infinite-loop

我使用MAMP在本地放置了一个快速的WordPress站点,然后将其检入SVN仓库。然后我将它检查到我的开发服务器。

除了从Interconnectit运行search and replace tool脚本以更新服务器上数据库中站点的URL之外,我没有更改任何内容。

最初,我收到500服务器错误。检查日志,我发现这个“SoftException”是因为index.php可以按组写入 - 权限是664.没问题 - 快速将权限更改为644排序。所以现在前线正在发挥作用。

然而,奇怪的是,该网站的管理员方面无法正常工作。它只是在所有浏览器中产生了无限的重定向循环。

Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

自本地开发版以来没有任何变化。 htaccess文件只是一个标准的WordPress文件。没有什么奇怪的......在当地仍然运作良好。

那是怎么回事?

16 个答案:

答案 0 :(得分:9)

无论出于何种原因/ wp-admin / path导致重定向循环,但/wp-admin/index.php没有。因此,我们可以使用.htaccess将/ wp-admin / path重定向到/wp-admin/index.php,方法是在“RewriteBase /”之后将以下行添加到.htaccess文件中:

RewriteBase /
RewriteRule  /wp-admin/ /wp-admin/index\.php [L,P]

这样对我有用。 你最终的.htaccess可能看起来像这样:

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

答案 1 :(得分:8)

检查wp-login.php的权限显示他们也被设置为664 - 导致index.php失败并导致500服务器错误的相同权限。

我将wp-login.php的权限更改为644并且嘿presto,WordPress登录页面出现了。

但是在登录时,另一个重定向循环。所以,再次看一下/wp-admin/index.php,权限是664而不是644.

修复它们会导致下一个文件出现问题 - 仪表板是一个正确的混乱。一个接一个,从664改为644纠正了问题(/wp-admin/load-scripts.php,/wp-admin/load-styles.php)。

很明显,递归更改权限是解决问题的唯一方法。

我的UNIX并不是一流的,但这似乎有效(从Mac OS X终端运行)。我从这个WP安装的根目录运行它。

find . -type f -perm 664 -print -exec chmod 644 {} \;

可能有更好的命令,但我理解这意味着“查找具有664权限的所有文件并将其更改为644”。

它解决了我的问题。

答案 2 :(得分:5)

如果您的网络服务器是nginx,您可能需要检查nginx的配置文件。如果有

if (!-f $request_filename){
    rewrite ^/(.+)$ /index.php?$1& last;
}

替换这些行
try_files $uri $uri/ /index.php?$args;

另请参阅Nginx PitfallsWordPress wiki page on nginx

答案 3 :(得分:3)

使用nginx配置我最初只使用此行并遇到相同的重定向问题:

location / {
    try_files   $uri /index.php$is_args$args;
}

添加之后一切都很好:

location /wp-admin/ {
    index index.php;
    try_files $uri $uri/ /index.php$args;
}

答案 4 :(得分:2)

如果您使用的是Cloudflare,则可能需要尝试将其添加到wp-config.php文件的TOP中:

define('WP_SITEURL', 'https://www.example.com');
define('WP_HOME', 'https://www.example.com');
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if(isset($_SERVER['HTTP_CF_VISITOR']) && strpos($_SERVER['HTTP_CF_VISITOR'], 'https')){
  $_SERVER['HTTPS']='on';
}

重要的是将其添加到wp-config.php文件的顶部,否则将出现“对不起,不允许您访问此页面”错误消息。

信用:https://www.meltajon.com/dev/wordpress-wp-admin-redirect-loop-with-cloudflare-ssl

答案 5 :(得分:1)

尝试在我的WP网站上发布时,我收到了DoS页面。我发现将function.php文件中的权限更改为600可以解决问题的建议,也可以向该文件添加脚本片段。这是一个WP帮助页面。我能够以解决方式进入出版。当我尝试打开编辑器时仍然有DoS。

答案 6 :(得分:0)

我只需要清除重定向。 由于我无法访问管理员,因此我将其添加到我的functions.php文件的顶部:

flush_rewrite_rules(); exit;

保存并刷新我的网站。 然后从functions.php文件中删除代码,然后再次刷新。 这样做对我来说。

我也认为重新启动固定链接可能是一个很好的措施。

PS。我认为主要问题来自于theme-my-login,因为它重定向到/ login。

答案 7 :(得分:0)

删除行

define('DOMAIN_CURRENT_SITE', 'www.sitename.de');

define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
来自wp-config.php

应该可以胜任。

多行

不需要这些行

答案 8 :(得分:0)

在启用网站的文件夹中,您需要编辑站点的配置并添加多站点重定向规则。对于Ubuntu 14.04,您将能够在/ etc / nginx / sites-available

下找到路径。

在服务器块中添加以下块,您应该能够避免无限重定向循环。

#Rewrite multisite '.../wp-.*' and '.../*.php'.
if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}

答案 9 :(得分:0)

在我的情况下,我遇到了类似的问题,原因是恢复了使用WP Migrate DB创建的db脚本。该脚本具有类似&#34; ## DEV URL ##&#34;的合并标签。我需要修复之前在mysql上运行脚本并将wp-config.php指向正确的数据库。

答案 10 :(得分:0)

就我而言,这是Apache的DirectoryIndex问题。 wp-admin正在访问wp-admin/index.php,但wp-admin未访问ERR_TOO_MANY_REDIRECTS并显示DirectoryIndex

听起来Apache的.htaccess可能设置为“错误”。尝试在DirectoryIndex index.php 文件的顶部重置此设置:

ofstream filewrite;
filewrite.open("............");
string voltage , freq;
freq= "A1, A2, A3";
voltage = "B1, B2, B3";

string delimiter = ",";
    size_t pos = 0;
    string token, token2;
    while ((pos = freq.find(delimiter)) != string::npos && (pos =voltage .find(delimiter)) != string::npos)
    {
        token = freq.substr(0, pos);
        token2 = voltage .substr(0, pos);
        filewrite << token << "," << token2 << endl;
        freq.erase(0, pos + delimiter.length());
        str2.erase(0, pos + delimiter.length());
    }

    filewrite << freq<<"," << voltage ;
filewrite.close();

在此处查看完整答案。 Can't access admin dashboard with wp-admin without /index.php after it

答案 11 :(得分:0)

如果您正在使用Cloudflare,请从Cloudflare帐户的SSL / TLS选项卡中,选择“完全加密”。它将解决问题。  SSL/TLS settings

答案 12 :(得分:-1)

我的问题是硬盘已满。尝试登录wordpress管理面板将我重定向到wp-login.php。我删除一些文件的那一刻就能够再次登录。

答案 13 :(得分:-1)

如果您有nginx,那么还要检查您的索引配置。至于我,我遇到了一个问题:我已经设置了以下内容:

server {
    server_name _;
    root /var/www/html;
    index /index.php;
}

因为您看到我已经使用尾部斜杠设置了index.php,这意味着所有重写请求都将转到document_root中的index.php。对于WP来说这是错误的,因为wp-admin目录有自己的index.php

答案 14 :(得分:-1)

以上答案让我非常接近。在我们的特定情况下,某些人在某些规则中添加了一些规则到站点根目录和管理文件夹中的htaccess文件,以阻止来自除一些列入白名单的IP之外的任何地方的流量(当试图访问wp-admin时)。

示例:

<Files wp-login.php>
   order deny,allow
   Deny from all

   # Allow from this IP address
  allow from 123.45.67.89
</Files>

将我们的IP添加到两个文件中的白名单中可以解决问题。

答案 15 :(得分:-1)

我从其他服务器恢复备份后遇到了同样的问题,我很有希望解决这个问题。

  chown -R www-data:www-data          /var/www
  chmod -R g+rwx                     /var/www

/var/www存储网站文件的位置,根据您的配置将其替换为合适的路径,例如/usr/share/nginx/www&lt;&lt;默认Nginx

相关问题