【发布时间】:2016-10-26 22:59:38
【问题描述】:
我已经在 nginx 中大量使用 rewrite 来执行这种事情:
/photos/123344 -> /photos/photos.php?id=123344
/photos/london-2016 -> /photos/photo-shoot.php?name=london-2016
目前我对其他(非动态)页面没有规则。例如
/photos/shoot-register.php -> /photos/shoot-register.php
我想成为什么样的人
/photos/shoot-register.php -> /photos/shoot-register
但没有为每个 .php 文件指定单独的 rewrite 规则。
看来try_files 是正确的指令:
location ~ ^/photos {
try_files $uri $uri.php?$args;
rewrite ^/photos/([0-9]+)(/?)$ /photos/photo.php?id=$1;
rewrite ^/photos/([^/\.]+)(/?)$ /photos/photo-shoot.php?name=$1;
}
但这不起作用,除非我删除两个重写行。
我认为这意味着在尝试文件后执行不会停止?它找到“shoot-register.php”,然后继续执行并以/photos/photo-shoot.php?name=shoot-register.php结束?
try_files 成功找到匹配后如何让它停止?
谢谢
【问题讨论】:
标签: nginx url-rewriting