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

raf*_*nes 5 wordpress redirect infinite-loop

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

除了从Interconnectit 运行搜索和替换工具脚本以更新服务器上数据库中站点的URL 之外,我没有更改任何内容.

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

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

Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.
Run Code Online (Sandbox Code Playgroud)

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

发生什么了?

小智 10

无论出于何种原因/ 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]
Run Code Online (Sandbox Code Playgroud)

它对我有用.你最终的.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
Run Code Online (Sandbox Code Playgroud)


Cae*_*mon 9

如果您使用 Cloudflare,您可能想尝试将其添加到 wp-config.php 文件的顶部:

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';
}
Run Code Online (Sandbox Code Playgroud)

将它添加到 wp-config.php 文件的顶部很重要,否则最终会出现“抱歉,您无权访问此页面”错误消息。

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


raf*_*nes 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 {} \;
Run Code Online (Sandbox Code Playgroud)

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

它解决了我的问题.

  • 这里的问题相同,但更改权限并没有解决它.:( (2认同)

小智 5

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

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

用这些行替换

try_files $uri $uri/ /index.php?$args;
Run Code Online (Sandbox Code Playgroud)

另请参阅nginx上的Nginx陷阱,WordPress维基页面