我正在尝试设置重写,以便请求的URL行为如下所示
/ newsletter / 2019/05
是
的改写
/newsletter.php?year=2019&month=05
和
/ newsletter / 2019/05 / yes
是
的改写
/newsletter.php?year=2019&month=05&app=yes
对于apache,它按预期工作:
RewriteRule ^newsletter/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2 [L]
RewriteRule ^newsletter/([^/]+)/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2&app=$3 [L]
在nginx中,我正在服务器{}中使用以下内容:
location /newsletter/ {
rewrite "^/newsletter/([^/]+)/([^/]+)$"
/newsletter.php?year=$1&month=$2?;
rewrite "^/newsletter/([^/]+)/([^/]+)/([^/]+)$"
/newsletter.php?year=$1&month=$2&app=$3?;
}
两者均可,但是带有“ app”变量的变体会立即加载,而较短的变体始终需要大约5秒钟来加载。
我尝试了以下方法,以使较短的变体加载更快而无济于事:
1.更改重写顺序
2.添加/删除?从最后开始选择其中一个或两个规则
3.从一个或两个规则的末尾添加/删除“ last”
4.设置2个位置{},但这导致nginx无法重新加载
我还尝试在规则的末尾添加“ break”,但这使我的浏览器下载了该页面而不是显示该页面。
有什么想法可以加快速度吗?