如何使用lang后缀设置nginx友好URL?

时间:2016-09-29 08:24:36

标签: php html nginx url-rewriting friendly-url

我希望有多语言(php / html)网站...但我在nginx / rewrite中非常弱 在http地址中有3个变量(ln -language,page,step)

我写https://testpage.org.pl/esp/home时出现问题 " / esp /" - 不被认为是$ ln变量......

我该如何解决?

这是我的nginx重写:

rewrite ^/([a-zA-Z0-9]+)$ /index.php?page=$1 last;
rewrite ^/([a-zA-Z0-9]+)/step-([1-3])$ /index.php?page=$1&step=$2 last;
rewrite "^/([a-z]{2})/$" /index.php?ln=$1 last;
rewrite "^/([a-z]{2})/([a-zA-Z0-9]+)$" /index.php?ln=$1&page=$2 last;
rewrite "^/([a-z]{2})/([a-zA-Z0-9]+)/step-([1-3])$" /index.php?ln=$1&page=$2&step=$3 last;

1 个答案:

答案 0 :(得分:1)

如果您的语言变量总是有2个或3个字符,您只需将其中的语言变量更改为:

rewrite "^/([a-z]{2,3})/$" /index.php?ln=$1 last;
rewrite "^/([a-z]{2,3})/([a-zA-Z0-9]+)$" /index.php?ln=$1&page=$2 last;
rewrite "^/([a-z]{2,3})/([a-zA-Z0-9]+)/step-([1-3])$" /index.php?ln=$1&page=$2&step=$3 last;

这将确保它只匹配长度在2到3之间的语言,并且在您的情况下可能会正常工作。