我希望Nginx能够做到以下几点:
如果uri匹配模式:
http://mysite.com/$string/
和$string不是'KB',而不是'图像',在特定的子文件夹中查找$ string.html。 如果子文件夹中存在$ string.html,则返回它。 如果不存在,请转到下一个匹配位置。
$ string = {任何字母,数字或短划线}
例如,如果用户请求:
http://mysite.com/test/
它应该寻找一个名为:
/webroot/www/myfolder/test.html
我已经尝试过的变体:
位置〜/ [a-zA-Z0-9 \ - ] + /
{
try_files /myfolder/$uri.html @Nowhere;
}
但:
如果文件不存在,我想让它考虑当前位置“不匹配”。
我想你可以试试这个:
location ~* ^/(KB|images)/$ { #rule for KB or images goes here } location ~* ^/([a-zA-Z0-9\-]+)/$ { root /webroot/www/myfolder/; try_files $1.html @Nowhere; } location @Nowhere { #rule for @Nowhere goes here }
有关更多信息,请参阅: http : //wiki.nginx.org/HttpCoreModule#location