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)
如果您使用 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
检查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".
它解决了我的问题.
小智 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维基页面