Помогите сделать rewrite

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Всем привет.
Есть сервер работающий под nginx.

Для сайта на этом сервере уже прописано правило rewrite:

rewrite ^/user/([^/\.]+)/?$ /viewprofile.php?login=$1 last;

Все ссылки по этому правилу вида Для просмотра ссылки Войди или Зарегистрируйся меняются на Для просмотра ссылки Войди или Зарегистрируйся

Т.к. сайт на разных языках, то можно добавить в урл ?language_code=1 и получить английский язык или ?language_code=2 и получить русский язык. Но это некрасиво, хотелось бы, чтобы эти ссылки выглядели красиво, а именно
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Для анкет пользователей

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Или можно наоборот

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Также нужно учесть что на сайте много других файлов и папок, главную страницу сайта запрашивают и так Для просмотра ссылки Войди или Зарегистрируйся, есть Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся и др.

Как бы так прописать это правило, чтобы /ru или /en везде заменялся корректно и без ошибок.
Помогите пожалуйста.
 
Код:
location /ru/ {
rewrite ^/ru/([^/\.]+)/?$ /index.php?language_code=ru&blah=$1 last;
}
 
location /en/ {
rewrite ^/en/([^/\.]+)/?$ /index.php?language_code=en&blah=$1 last;
}
 
location /ru/user/ {
rewrite ^/ru/user/([^/\.]+)/?$ /viewprofile.php?language_code=ru&user=$1 last;
}
 
location /en/user/ {
rewrite ^/en/user/([^/\.]+)/?$ /viewprofile.php?language_code=en&login=$1 last;
}

Первые два локейшна отработают index.php (если он двуязычный, если нет, то их можно убрать), две последних отработают профили пользователей на разных языках. По желанию можно сделать два локейшна вместо четырех, но я не знаю внутреннюю кухню движка. А так можно сделать
Код:
location /ru/ {
rewrite ^/ru/user/([^/\.]+)/?$ /viewprofile.php?language_code=ru&user=$1 break;
.....
rewrite ^/ru/([^/\.]+)/?$ /index.php?language_code=ru&blah=$1 break;
}
но тут важен порядок указания внутренних урлов, и неизвестно, какие еще редиректы хочет организовать ТС.
 
Назад
Сверху