我目前正在尝试配置 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
}
这会导致“页面未正确重定向”错误。
关于如何解决这个问题有什么建议吗?
谢谢。
答案1
这里有一个问题:
rewrite ^ /$lang/ permanent;
您正在重写每一个请求,而不仅仅是对主页的请求,因为每一个请求有一个开始。
至少有两种方法可以解决此问题。您可以使用以下任一方法:
仅重写针对主页的请求。
rewrite ^/$ /$lang/ permanent;
使用
location
仅匹配主页的特定内容:location = / { return 301 /$lang/; }