В настоящее время я пытаюсь настроить установку Nginx с использованием многосайта Wordpress, используемого для языковой поддержки.
Настроен мультисайт: mysite.com (не используется) mysite.com/it mysite.com/en
В основном я хочу добавить язык по умолчанию и перенаправить, если найду английский. На самом деле сайт находится на установке Apache, поэтому мы используем:
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/ [L,R=301]
RewriteRule ^$ /it/ [L,R=301]
для фактического перенаправления.
Я пытаюсь воспроизвести это с помощью nginx, безуспешно. Пока я добавил:
map $http_accept_language $lang {
default it;
~en en;
}
server {
listen 80;
server_name mysite.com;
access_log /var/log/nginx/logs/mysite-access.log ;
error_log /var/log/nginx/logs/mysite-error.log ;
location / {
root /var/www/html/mysite;
index index.php index.html;
try_files $uri $uri/ /index.php?$args;
rewrite ^ /$lang/ permanent;
}
#Other rules used by wordpress and plugins
}
Это приводит к ошибке «Страница не перенаправляет правильно».
Есть какие-нибудь советы, как решить проблему?
Спасибо.
Вот проблема:
rewrite ^ /$lang/ permanent;
Вы переписываете каждый запрос, а не просто запросы к домашней странице, потому что каждый запрос имеет начало.
Есть (как минимум) два способа исправить это. Вы можете использовать:
Переписывать только запросы для домашней страницы.
rewrite ^/$ /$lang/ permanent;
Используйте конкретный location
что соответствует только домашней странице:
location = / {
return 301 /$lang/;
}