2013-11-14 2 views
7

Итак, вчера у меня возник вопрос, как установить wordpress в каталог «/ root». Я был не очень успешным в этом, и я отказался от этого.Wordpress nginx redirect loop

Итак, прямо сейчас 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).

В панели администратора у меня есть как «Адрес (URL) для WordPress», так и «Адрес сайта (URL)», установленный на: «http://blog.mysite.com». Изменение любого из них на что-то еще, например: «http://blog.mysite.com/wordpress» не помогает вообще!

Файл .htaccess пуст, но я использую стандартные константы по умолчанию, поэтому не должно быть проблемой (однако, я не уверен).

Обе директивы root nginx и apache2 указывают на «/ var/www/wordpress». Статические файлы (css, js) работают, если это имеет значение.

Как исправить эту проблему? Любая помощь высоко ценится!

Спасибо заранее!

+0

Вы выяснили это из? – ark

+0

@ark Hi. Да. Оказалось, что наша установка WP была неисправной, поэтому в конце концов это не проблема nginx :( Если у вас что-то похожее, попробуйте переустановить или установить чистый блог рядом с существующим и посмотреть, работает ли это раньше вы начинаете касаться nginx. – Dmitri

ответ

1

У меня было много проблем при переходе с 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; 
    } 
} 

Я даже не надо ничего менять в панели администратора при переключении серверов, он просто работал отлично.

+0

Все, что у меня есть на VPS: PHP (php5, php5-mysql, libs), Apache2 - новая версия. Они были предварительно установлены на VPS, но я очистил их и сделал новую установку. Итак, я явно не понимаю, что там происходит и почему это происходит переадресация в первую очередь (принимая во внимание тот факт, что админ-панель работает безотказно) Но, большое спасибо! BTW, я не использую директиву «fastcgi», я просто прокси передаю ее Apache: proxy_pass 127.0.0.1:8081 (я сам определил порт) – Dmitri

8

Наконец, нашел решение:

http://www.violato.net/blog/php/88-wordpress-did-infinite-301-redirect-loop

Надеется, что это поможет другим, которые имеют ту же проблему, как и я.

Спасибо всем.

+0

Это не загрузка. Если у вас есть решение на вашем конце, можете ли вы отредактировать свой ответ и добавить его напрямую? Спасибо – Arda

+1

Ответ Emile от контура ссылки включен здесь. Плохое форматирование, но в случае его исправления добавьте следующее в файл functions.php вашей темы: remove_filter ('template_redirect', 'redirect_canonical'); – DevOops

5

Не самое красивое исправление, но удаление фильтра перенаправления по вашей теме functions.php файл работал для меня.

remove_filter('template_redirect', 'redirect_canonical'); 

Из ссылки в ответе OP в:
Wordpress did infinite 301 redirect loop

+0

святое дерьмо. Через 40 часов я наконец получил ответ, и это одна линия. – osoblanco

+0

Добро пожаловать на WordPress! –

1

В моем случае, петля редиректа только пострадавшей сор-администратор страниц, поэтому я добавил в начале линии

if (is_admin) remove_filter('template_redirect', 'redirect_canonical'); 

и все еще работает, плюс каноническое перенаправление продолжает выполнять свою работу на переднем конце!

Я надеюсь, что это поможет кому-то еще!

1

У меня была аналогичная проблема с использованием 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 установил ее.