Nginx

Nginx + Wordpress 語言重定向

  • July 7, 2021

我目前正在嘗試使用用於語言支持的 Wordpress 多站點配置 Nginx 安裝。

多站點配置: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;

您正在重寫每個請求,而不僅僅是對首頁的請求,因為每個請求都有一個開始。

有(至少)兩種方法可以解決這個問題。您可以使用:

  1. 僅重寫對首頁的請求。
rewrite ^/$ /$lang/ permanent;
  1. location使用僅與首頁匹配的特定內容:
location = / {
   return 301 /$lang/;
}

引用自:https://serverfault.com/questions/775613