我是regex和nginx的新手,我想完成这个:
domain.com/username {no trailing slash}指向domain.com/profile/user/username
domain.com/username/ {with trailing slash}指向domain.com/profile/user/username
location ~ ^/(?<username>[A-Za-z0-9\.\_]+)/?$ {
try_files $uri $uri/ /profile/user/$username/?rewrite=1&$args;
}
只能解决几个问题
1.位置/正在尝试文件,我不想这样。
2.如果我删除了?在正则表达式字符串的末尾创建/ strict,第一个问题得到解决,但是不会尝试没有尾部斜杠的用户名。
答案 0 :(得分:0)
我通过向所有网址添加一个尾部斜杠来修复此问题,如下所示:
location / {
root /usr/share/nginx/html/domain.com;
index index.php index.htm index.html;
rewrite ^([^.]*[^/])$ $1/ permanent;
}
location ~ ^/(?<user>[A-Za-z0-9\.\_]+)/$ {
try_files $uri $uri/ /$uri/ /profile/user/$user/;
}