2017-07-19 55 views
0

我是相当新的正则表达式和nginx的,我想做到这一点:try_files在正则表达式的具体位置在nginx的

domain.com/username       {没有尾随斜线   }指向域.COM /型材/用户/用户名
domain.com/username/     {用斜线 }指向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

如果可以帮助,我可以发布nginx服务器配置文件。 –

回答

0

我加入了尾部斜杠下面所有的URL解决了该问题:

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/; 
}