Я успешно развернул свой сайт WordPress на NginX. Мне нужны постоянные ссылки, чтобы быть http://www.example.com/%postname%
и блог быть http://blog.example.com/%postname%
. Он перенаправляет весь трафик с www на не-www, но когда я пытаюсь настроить его для перенаправления не-www на www, раскомментируя строки в конфигурационном файле mydomain для NginX, написанные ниже, браузер жалуется на цикл перенаправления.
Мой global / limits.conf:
http://pastebin.com/cLfMv6jC
а global / wordpress.conf:
http://pastebin.com/Uc9KSqhh
и файл конфигурации mydomain для NginX с серверными блоками:
server {
server_name _;
return 301 $scheme://www.example.com$request_uri;
}
#server {
# listen 80;
# server_name example.com;
# return 301 $scheme://www.example.com$request_uri;
#}
server {
listen 80 default_server;
listen [::]:80;
root /usr/share/nginx/html/example.com;
index index.php index.html index.htm;
server_name www.example.com;
include global/restrictions.conf;
include global/wordpress.conf;
}
Пожалуйста, укажите на мою ошибку.
[Обновление] На самом деле у меня также есть следующий серверный блок:
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html/mydomain_test;
index index.php index.html index.htm;
server_name test.example.com;
include global/restrictions.conf;
include global/wordpress.conf;
}
Я не понимаю, почему вы используете server_name _
. Раньше это использовалось для обозначения сервера по умолчанию, но затем вы устанавливаете server_name www.mydomain.com
строфа по умолчанию (listen 80 default_server
).
Я бы переписал вашу конфигурацию так:
server {
listen 80;
listen [::]:80;
server_name www.mydomain.com;
root /usr/share/nginx/html/mydomain.com;
index index.php index.html index.htm;
include global/restrictions.conf;
include global/wordpress.conf;
}
server {
listen 80 default_server;
server_name mydomain.com;
return 301 $scheme://www.mydomain.com$request_uri;
}
Если приведенные выше модификации не работают, я бы сосредоточился на ваших включениях. Изолируйте их, создав простой /usr/share/nginx/html/mydomain.com/test.html
и изменив первую строфу:
server {
listen 80;
listen [::]:80;
server_name www.mydomain.com;
root /usr/share/nginx/html/mydomain.com;
index test.html
}
Затем проверьте, посетив www.mydomain.com
и domain.com
и посмотрите, направят ли оба вас к test.html
вы создали. Если они это сделают, то раскройте их.
Ваша установка WordPress также способна перенаправить посетителя на тот, который, по его мнению, является правильным URL-адресом. Для этого он указывает заголовок Location: с помощью функции php header (). Итак, вы можете увидеть, что ваш сайт перенаправляется туда, куда вы сказали nginx, а затем wordpress отправляет его обратно.
В таблице wp_options установите для параметров siteurl и home значение uri www.domain.com.