6

我使用 MAMP 在本地构建了一个快速的 WordPress 站点,然后将其签入 SVN 存储库。然后我将其签出到我的开发服务器上。

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

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

然而,奇怪的是,该站点的管理端不起作用。它只是在所有浏览器中产生了一个无限的重定向循环。

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

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

发生什么了?

4

16 回答 16

10

无论出于何种原因, /wp-admin/ 路径会导致重定向循环,但 /wp-admin/index.php 不会。因此,我们可以使用 .htaccess 将 /wp-admin/ 路径重定向到 /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
于 2014-02-07T04:23:30.447 回答
9

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

我将权限更改wp-login.php为 644,嘿,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”。

它解决了我的问题。

于 2013-01-26T00:39:27.870 回答
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';
}

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

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

于 2018-11-04T14:36:08.163 回答
5

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

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

将这些行替换为

try_files $uri $uri/ /index.php?$args;

另请参阅Nginx Pitfallsnginx 上的 WordPress wiki 页面

于 2013-11-16T06:35:17.563 回答
3

使用 nginx 配置,我最初只有这一行并且遇到了相同的重定向问题:

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

添加后一切都很好:

location /wp-admin/ {
    index index.php;
    try_files $uri $uri/ /index.php$args;
}
于 2017-07-25T01:39:11.023 回答
2

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

于 2019-12-24T12:19:38.193 回答
1

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

flush_rewrite_rules(); exit;

保存并刷新了我的网站。然后从您的functions.php 文件中删除代码,然后再次刷新。那是为我做的。

我还认为重新保存您的永久链接可能是一个很好的措施。

PS。我认为主要问题来自主题-我的登录,因为它重定向到/登录。

于 2014-11-10T10:27:05.320 回答
1

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

于 2015-06-17T13:44:40.070 回答
0

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

于 2015-05-17T14:50:37.597 回答
0

删除线条

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

define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

wp-config.php应该做的工作。

这些线对于多线不是必需的

于 2015-06-05T13:09:33.077 回答
0

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

听起来 Apache 的DirectoryIndex设置可能“不正确”。尝试在文件顶部重置它.htaccess

DirectoryIndex index.php

在此处查看完整答案。 在没有 /index.php 的情况下无法使用 wp-admin 访问管理仪表板

于 2019-10-10T08:32:11.257 回答
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;
}
于 2016-04-07T13:14:28.340 回答
0

在我的情况下,我遇到了类似的问题,这是由于恢复了使用 WP Migrate DB 创建的数据库脚本。该脚本具有像“## DEV URL ##”这样的合并标签,我需要先修复它,然后再在 mysql 上运行脚本并将 wp-config.php 指向正确的数据库。

于 2017-06-21T10:30:34.220 回答
-1

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

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

如您所见,我设置了带有斜杠的 index.php,这意味着所有重写请求都将转到 document_root 中的 index.php。对于 WP 是错误的,因为 wp-admin 目录有自己的 index.php

于 2017-03-04T21:53:16.690 回答
-1

上面的答案让我非常接近。在我们的特殊情况下,有人在某个时候向站点根目录和 admin 文件夹中的 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 添加到两个文件的白名单中可以解决问题。

于 2017-06-15T15:52:42.867 回答
-1

从其他服务器恢复备份后,我遇到了同样的问题,我以这种方式解决了这个问题。

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

存放网站文件的地方 /var/www,根据你的配置替换成合适的路径,例如/usr/share/nginx/www<< default Nginx

于 2017-11-04T23:34:34.833 回答