Назад | Перейти на главную страницу

Правило перезаписи Nginx - добавление языкового префикса

У меня есть сайт spanish.com. Я хочу, чтобы пользователи загружали страницы в каталог "es", т. Е. spanish.com/es. Например:

Пользователи должны видеть: spanish.com но spanish.com/es загружен

Пользователи видят spanish.com/samplepage но spanish.com/es/samplepage загружен


Я попытался

server {
    listen 80;
    server_name www.spanish.com;
    return 301 $scheme://spanish.com$request_uri;
} 

server {
    listen 80;
    server_name spanish.com;
    limit_conn arbeit 32;

    rewrite ^(.*)$ http://$host/es/$1 permanent;

    ## Access and error logs.
    access_log /var/log/nginx/spanish.com_access.log;
    error_log /var/log/nginx/spanish.com_error.log;

    ...
}

но это приводит к бесконечным перенаправлениям на http://spanish.com/es/es/es/es/es/es/es/...


ОБНОВИТЬ
кроме того, как исключить файлы из правила перезаписи? Как в апаче?

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

Вот как я это пережил:

## for the homepage
location = / {
    rewrite ^ /es;
}

## for the rest of the pages, excluding locations beginning
## with /<2char-lang-prefix>/*
## also excludes locations having only 3 characters, e.g. "/nb"
location ~* "^/(?!.{2,2}/).{3}.*$" {
    rewrite "^/(.*)$" /es/$1;
}