ig0r74
@ig0r74
MODX-разработчик

Как переписать правила для NGINX?

Есть следующие правила в .htaccess, сейчас сайт нужно перенести на сервер с NGINX:

# The Friendly URLs part
# redirect all requests to /ru/favicon.ico
# to /favicon.ico
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(sr|ru)favicon.ico$ favicon.ico [L,QSA]

# redirect all requests to /en/assets* and /ru/assets* to /assets*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(sr|ru)/assets(.*)$ assets$2 [L,QSA]

# redirect all other requests to  /ru/*
# to index.php and set the cultureKey parameter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(sr|ru)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]

Это довольно криво сделанная мультиязычность.
Заранее спасибо!
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
keydon2
@keydon2
...
Пишу навскидку, просто показать идею, за корректность синтаксиса не отвечаю.
HTTP Redirect с 301 кодом ответа (остальные по аналогии)
location /ru/favicon.ico {
return 301/favicon.ico;
}

Перевод в другой location(он должен быть создан, т.е. например location /assets/ должен существовать).
Последовательно передаем в другие location, если не нашли то отдаем 403.
location /ru/ {
rewrite ^(/ru)/assets/(.*)$ /assets/$2 break;
rewrite ^(/ru)/favicon.ico$ /favicon.ico break;
rewrite ^(/en)/assets/(.*)$ $1/assets/$2 break;
rewrite ^(/ru)/(.*)$ /index.php break;
return 403;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы