我有一个子目录(/foo
)的正则表达式位置,并希望Nginx为/foo/bar
的请求执行此操作:
bar
是否是该位置中定义的根目录中的文件或目录。如果是目录,请检查索引文件。bar
回退到给定的URI(.php文件还有另一个工作处理程序)。看起来像这样:
location ~ ^/foo(/.*)?$ {
root /my/root/with/files;
index index.php;
try_files $1 $1/ /my/root/with/files/index.php?$args;
}
应该很简单,但我不能让这个工作,文档没有帮助。我尝试了alias
,root
等许多组合。
有任何建议,如何让这个工作?或者您知道在哪里可以获得有关try_files,root,别名,位置(包括有关未解决错误的注释)的有用文档吗?
答案 0 :(得分:1)
我摆脱了大部分正则表达式和嵌套位置(似乎是错误的,特别是与alias
和try_files
指令结合使用),现在它的工作原理如下:
location /foo/ {
alias /my/root/with/files/;
index index.php;
try_files $uri $uri/ /foo//foo/index.php?$args;
}
try_files
的最后一个参数似乎很奇怪,但alias
指令与该位置的组合将替换第一个/foo/
。
获得的经验:在Nginx中保持尽可能简单(忘记配置中的优雅;))或者它会让你大吃一惊。