0

我试图让 example.com/language/en 指向 example.com/language?lang=en 我已经让 @language 工作(有点,我最后解释了一些错误)但不幸的是我不知道如何使@language 和@extensionless-php 同时工作,我通过删除位置/ 中的@extensionless-php 并添加@location 来测试@language 代码。而且它现在的方式接受多个像这样的参数 //example.com/language/en/en/en 我希望它在语言之后有超过 1 个 / 时返回 404 错误

当前配置:

location / {
    try_files $uri $uri.html $uri/ @extensionless-php;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

location @language {
    rewrite ^/language/(.*)$ /language.php?lang=$1 last;
}
4

1 回答 1

0

答案只是rewrite ^/language/(.*)$ /language.php?lang=$1 last;从 @language 中删除,编辑正则表达式,以便当 URI 为/language/en/404 错误时

location / {
    try_files $uri $uri.html $uri/ @extensionless-php;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

rewrite ^/language/([^/]+)$ /language.php?lang=$1 last;
于 2015-04-23T23:46:42.430 回答