У меня есть 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;
}
Но как-то не похоже на работу.
Добавьте файл .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]
Я бы предложил следующее. В этом примере вы «теряете» все остальные аргументы запроса.
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
}
}