it-swarm.com.ru

Цикл перенаправления на wp-admin или wp-login.php

Я собрал быстрый сайт WordPress локально, используя MAMP, а затем зарегистрировал его в репозитории SVN. Затем я проверил это на моем сервере разработки.

Я ничего не изменил, кроме как запустить инструмент поиска и замены скрипт из Interconnectit, чтобы обновить URL сайта в базе данных на сервере.

Изначально я получил 500 ошибок сервера. Проверяя журналы, я обнаружил, что это «исключение SoftException» было связано с тем, что index.php была доступна для записи по группе - разрешения были 664. Нет проблем - быстрое изменение разрешений на 644 отсортировало это. Так что теперь передняя сторона работала.

Однако, как ни странно, админская сторона сайта не работала. Он просто создал бесконечный цикл перенаправления во всех браузерах.

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

С версии для локальной разработки ничего не изменилось. Файл htaccess - это просто стандартный файл WordPress. Ничего странного ... все еще работает нормально на месте.

Так, что происходит?

4
raffjones

Проверка разрешений 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 Terminal). Я запустил его из корневого каталога этой WP установки.

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

Возможно, есть лучшая команда, но я понимаю, что это означает «найти все файлы с разрешениями 664 и изменить их на 644».

Это исправило мою проблему.

8
raffjones

По какой-либо причине/wp-admin/path вызывает цикл перенаправления, а /wp-admin/index.php - нет. Таким образом, мы можем использовать .htaccess для перенаправления/wp-admin/path в /wp-admin/index.php, добавив следующую строку в ваш файл .htaccess после строки «RewriteBase /» следующим образом:

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
8
GandalfTheWhite

если вашим веб-сервером является nginx, вам может потребоваться проверить файл конфигурации вашего nginx. Если там есть

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

Замените эти строки

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

Смотрите также Ловушки Nginx , Вики-страница WordPress на nginx

5
oli

в конфигурации nginx у меня изначально была только эта строка и возникла та же проблема с перенаправлением: 

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

после добавления все было нормально: 

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

Я получал DoS-страницы при попытке опубликовать на своем WP сайте. Я нашел совет, что изменение разрешений в файле function.php до 600 может решить эту проблему, а также добавить в этот файл фрагмент сценария. Это была WP страница справки. Я смог добраться до публикации в обходном пути. Все еще есть DoS, когда я пытаюсь открыть редактор. 

1
Shoshana Werbner

У меня была похожая проблема в моем случае, это было связано с восстановлением сценария db, созданного с помощью WP Migrate DB. В скрипте были теги слияния, такие как «## DEV URL ##», которые мне нужно было исправить перед запуском скрипта на mysql и указанием wp-config.php на правильную базу данных.

0
John

Убрать строки

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

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

от wp-config.php должен сделать работу.

Эти строки не нужны для мульти 

0
frieder

В папке включенных сайтов вам нужно будет отредактировать конфигурацию для вашего сайта и добавить правила перенаправления для нескольких сайтов. Для 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;
}
0
Basil Abbas

Если вы используете 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

0
Caedmon

Мне просто нужно было очистить мои перенаправления . Так как я не мог получить доступ к Admin, я добавил это в начало моего файла functions.php:

flush_rewrite_rules(); exit;

Сохранил его и обновил мой сайт . Затем удалите код из вашего файла functions.php и затем обновите снова . Это сделало это для меня. 

Я также думаю, что это может быть хорошей мерой, чтобы восстановить ваши постоянные ссылки.

PS. Я думаю, что основная проблема была связана с theme-my-login, так как он перенаправлял на/login.

0
GGedde