我有2个网站的副本。他们使用相同的重写规则。其中一个站点是另一个站点内的子目录。我想知道如何在进入子目录并使用这些规则之前我可以检查nginx如何使用通用规则
这是我的nginx.conf
location /rock/ {
rewrite ^/(|/)$ /rock/index.php?request=$1;
rewrite ^/([a-zA-Z0-9/_-]+)(|)$ /rock/index.php?request=$1;
}
location / {
rewrite ^/(|/)$ /index.php?request=$1;
rewrite ^/([a-zA-Z0-9/_-]+)(|)$ /index.php?request=$1;
}
答案 0 :(得分:0)
好的,因为你说它有用,让我解释一下你做了什么,我会从维基页面引用它们:
首先使用的标志是break
<强>断裂强>:
完成当前重写指令的处理,并且仅在当前位置块内继续进行非重写处理。
通过将关键字break
添加到任何重写规则,它告诉nginx停止重写,所以即使它匹配另一个有重写的位置,它也不会运行它,这就是为什么它没有执行重写位置location / { .. }
另一个关键字是last
,
过去强>:
完成当前重写指令的处理并重新启动该过程(包括重写),并搜索所有可用位置的URI匹配。
这个告诉nginx停止重写并重新使用新的重写URL重新编写,这在你有某种短URL的情况下很有用,例如然后它被重写为更大的扩展URL,它还有另一个重写提取参数并将它们发送到php引擎。
还有redirect
和permanent
,但这些用于重定向。
您可以在the rewrite doc page,the wiki page中了解更多有关这些标志的内容,这些标志是“过时的”,但我更喜欢它,因为它使用的是更简单的语言。