Переписать URL для nginx с языковой опцией

У меня есть URL www.foo.com который имеет два языка EN а также CN, У меня есть такие страницы, как about.php, product.php, так далее.

Я хочу URL www.foo.com/about.php?lang=cn быть написанным как www.foo.com/cn/about и так же, www.foo.com/en/product, так далее.

Я использую nginx для обслуживания этого сайта php.

Я могу скрыть .php файл как

location / {
try_files $uri $uri/ $uri.php?$query_string;
}

Я пытался написать что-то вроде этого

location / {
try_files $uri $uri/$query_string/ $uri.php?$query_string;
}

Но как-то не похоже на работу.

0

Решение

Добавьте файл .htaccess в вашу папку.

.htaccess файл:

RewriteEngine On    # Turn on the rewriting engine

RewriteRule    ^([A-Za-z0-9-]+)/about/?$    about.php?lang=$1    [NC,L]
RewriteRule    ^([A-Za-z0-9-]+)/product/?$    product.php?lang=$1    [NC,L]
0

Другие решения

Я бы предложил следующее. В этом примере вы «теряете» все остальные аргументы запроса.

 location / {
# for every query string parameter nginx provides a variable
# $arg_<name>
if ($arg_lang != ''){
set $old_lang $arg_lang;
set $args lang='';
set $arg_lang '';
# questionmark after $uri drops all query params
rewrite ^ /$old_lang$uri? redirect; # or permanent
}
}
0

По вопросам рекламы [email protected]