今天在写nginx规则的时候 遇到一个坑,折腾了很久才搞定。记录一下。
起初是我想匹配两个字符,且可带/或者不带/ 正则如下
location ~ ^/([a-zA-Z]{2})(\/)?$ {
rewrite ^ /plus/home.php?language=$1 last;
}
正常情况下 这个代码是可以通过的,我也是测试了很久 都没有问题的,结果添加到nginx上就验证不通过,奇了怪。于是开始各种百度google查询,依旧毫无头绪。无奈之下,想到nginx转到apache 然后再通过工具转回来试试。
转为apache的规则如下
RewriteRule ^/([a-zA-Z]{2})(/)?$ /plus/home.php?language=$1 [L]
通过 https://winginx.com/en/htaccess 开始转换得到了下面的代码
rewrite "^/([a-zA-Z]{2})(/)?$" /plus/home.php?language=$1 break;
添加到Nginx配置上,直接就测试通过。
比对之后才发现 规则是被双引号内,真是一个坑,记录一下。
文章第三行貌似有个错字“期初”还是“起初”。
谢谢,已纠正。