Итак, вчера у меня возник вопрос о том, как установить wordpress в каталог «/ root». Я был не очень успешным в этом, и я отказался от этого.
Итак, прямо сейчас wordpress находится под папкой « / var / www / wordpress » (так что это находится в отдельной папке) (я использую Ubuntu 12.04 LTS, если это имеет значение).
И моя проблема в том, что сразу после того, как я сконфигурировал все (все работает как шарм), я был перенаправлен на страницу панели администратора. Все работало нормально до тех пор, пока я не попытался посетить блог.
URL-адрес моего блога: «blog.mysite.com». Вот почему я использую NGINX, потому что у меня есть два разных приложения (и среды) на одном сервере, и мне нужно различать их.
Итак, факт: blog.mysite.com/wp-admin (/wp-login.php) работает полностью нормально, но когда я нахожусь на первой странице: blog.mysite.com , он продолжает говорить мне, что есть бесконечный цикл переадресации (301 переадресация в соответствии с файлом журнала nginx).
На панели администратора у меня есть «адрес (адрес) WordPress» и «адрес сайта (URL)», установленный на: « http://blog.mysite.com ». Изменение любого из них на что-то другое, например: « http://blog.mysite.com/wordpress » вообще не помогает!
Файл .htaccess пуст, но я использую стандартные константы по умолчанию, поэтому не должно быть проблемой (однако, я не уверен).
Как корневые директивы nginx, так и apache2 указывают на «/ var / www / wordpress». Статические файлы (css, js) работают, если это имеет значение.
Как я могу исправить эту проблему? Любая помощь высоко ценится!
Заранее спасибо!
Наконец, нашли решение:
http://www.violato.net/blog/php/88-wordpress-did-infinite-301-redirect-loop
Надеюсь, это поможет другим, которые имеют ту же проблему, что и я.
Всем спасибо.
Не самое красивое исправление, но удаление фильтра перенаправления в вашей теме. Файл functions.php
работал для меня.
remove_filter('template_redirect', 'redirect_canonical');
Из ссылки, приведенной в ответе OP:
WordPress сделал бесконечный цикл 301 переадресации
У меня было много проблем при переходе с Apache на Nginx в прошлом, все решалось, когда я очищал Apache, что каким-то образом мешало Nginx и вызывало проблемы для каждого сервера. Вот моя конфигурация wordpress для Nginx, в соответствии с руководствами Nginx и WordPress для друг друга:
server { listen 80; server_name blog.mysite.com; root /var/www/wordpress; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$args; } location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; } location ~ \.php$ { try_files $uri /index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; # CHANGE THE LINE ABOVE IF NEEDED fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Мне даже не пришлось ничего менять на панели администратора при переключении серверов, это просто отлично работало.
В моем случае цикл перенаправления затрагивал только страницы wp-admin, поэтому я добавил в начале строки
if (is_admin) remove_filter('template_redirect', 'redirect_canonical');
и все еще работает, плюс каноническая переадресация продолжает выполнять свою работу на переднем конце!
Надеюсь, это поможет кому-то еще!
У меня была аналогичная проблема с использованием Nginx в качестве обратного прокси для Apache.
Через несколько часов я узнал, что это вызвано $_SERVER["REQUEST_URI"]
, установленным index.php
Nginx вместо фактического URL-адреса, и WordPress пытался удалить index.php
путем перенаправления на url без index.php
в wp-includes/canonical.php
.
Решение для меня использует что-то вроде этого,
proxy_pass http://111.111.111.111:8080$request_uri;
Поэтому добавление $request_uri
исправило это.