Puncte:1

Redirecționarea limbajului Nginx + Wordpress greșit cu limba implicită

drapel us

Redirecționarea limbajului Nginx + Wordpress greșit cu limba implicită

Scuze pentru duplicarea acestor întrebări aici: Redirecționarea limbii Nginx + Wordpress

Toate funcționează, dar pentru limba implicită EN.

Vreau doar să redirecționez vizitatorii JP către directorul /ja/, poate mai multe alte țări către alte directoare mai târziu.

Deocamdată, vreau ca toate celelalte țări să fie în domeniul rădăcină.

Regula pe care am folosit-o este:

harta $http_accept_language $lang {
    implicit ro;
    ~ja ja;
}

...

rescrie ^/$ /$lang/ permanent;

Această regulă ia redirecționat pe toți ceilalți vizitatori către mydomain.com/en/, adică 404, desigur, deoarece EN este limba mea principală!

=======================================

Acestea sunt toate regulile din configurația site-ului

Sper că cineva mă poate ajuta cu asta!

harta $http_accept_language $lang {
implicit ro;
~ja ja;
}

Server 
{ 
asculta 80; 
asculta 443 ssl http2; 
nume_server domeniul meu.com www.domeniul meu.com; 
index index.php index.html index.htm default.php default.htm default.html; 
root /www/wwwroot/mydomain.com;

#RESCRIERE-START

rescrie ^/$ /$lang/ permanent;

includ /www/server/panel/vhost/rewrite/mydomain.com.conf;
#REScrie-Sfârșit


locație ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENȚĂ|README.md)
{
    întoarce 404;
}


locație ~ \.cunoscută{
    permite tuturor;
}

locație ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expiră 30d;
    error_log /dev/null;
    access_log /dev/null;
}

locație ~ .*\.(js|css)?$
{
    expiră 12h;
    error_log /dev/null;
    access_log /dev/null; 
}
access_log /www/wwwlogs/mydomain.com.log;
error_log /www/wwwlogs/mydomain.com.log;
}
Richard Smith avatar
drapel jp
Aveți `default en;` în harta dvs. - vreți să spuneți că nu doriți ca implicit să redirecționeze către `/en/`?
Matthew avatar
drapel us
da, @Richard Smithï¼¼ vreau doar să redirecționeze limba tradusă către directoarele lor, toate celelalte către root: mydomian.com
Matthew avatar
drapel us
Bună @Richard Smith ï¼ mulțumesc pentru răspuns, dar îmi pare rău, deoarece nu știu cum să codific, așa că ați putea să mă ajutați cu ` if ($lang) { ... }`
Matthew avatar
drapel us
Tocmai am postat mai jos fișierul de configurare lat, vă rog să mă ajutați să-l verific
Matthew avatar
drapel us
scuze greșeala mea, doar am șters răspunsul și am editat întrebarea!
drapel sv
Bun venit la ServerFault.Declarația dvs. de rescriere ar putea fi scrisă ca `if ( $lang != "en" ) { rewrite ^/$ /$lang/ permanent; }` pentru a obține efectul dorit.
Puncte:0
drapel jp

Dacă eliminați implicit ro; linie de la dvs Hartă, valoarea a $lang va deveni șirul gol care este evaluat ca fals într-un dacă expresie. Vedea acest document pentru detalii.

Puteți înlocui rescrie ^/$... declarație cu a locație = / bloc. Vedea acest document pentru detalii.

De exemplu:

harta $http_accept_language $lang {
    ~ja ja;
}

Server {
    ...
    locație = / {
        dacă ($lang) {
            returnează 301 /$lang/$is_args$args;
        }
    }
    ...
}

Vedea acest document asupra cărora sunt permise declarații în cadrul unui dacă bloc care este imbricat într-un Locație bloc.

Matthew avatar
drapel us
Funcționează, dar apare o altă problemă: pentru altă limbă, a fost redirecționată către mydomain.com// , există 2 „//” în final

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.