nginx:重写规则,从$ request_uri中删除/index.html
||
当文件系统中存在该特定文件时,我已经看到了几种重写re0并将ѭ1添加到其中的方法,例如:
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
但我想知道相反的情况是否可以实现:
也就是说,当有人要求http://example.com/index.html
时,他们会被重定向到http://example.com
因为nginx regexp是与perl兼容的,所以我尝试了如下操作:
if ( $request_uri ~* \"index\\.html$\" ) {
set $new_uri $request_uri ~* s/index\\.html//
rewrite $1 permanent;
}
但这主要是一个猜测,是否有任何好的文档描述nginx的modrewrite?
没有找到相关结果
已邀请:
7 个回复
哭木算
单独使用此选项可用于大多数URL,例如
,但会破坏
。要解决此问题,我有以下附加规则:
找不到文件时,“ 10”部分将返回404错误。 我不知道为什么仅靠第一次重写是不够的。
梦砍废么
重定向到
并将
重定向到
:
祁澈盘哼颗
,Nicolas的答案导致了重定向循环,因此我不得不搜索其他答案。 在nginx论坛上提出了这个问题,那里的答案效果更好。 http://forum.nginx.org/read.php?2,217899,217915 使用任一
要么
柑恫祟
程琶
它涵盖了根实例
和下层实例
正则表达式的第一部分基本上翻译为:
或
-在第一种情况下$ 2是一个空字符串,因此您重定向到just12ѭ,在第二种情况下$ 2是
因此您将重定向到
我实际上更喜欢
,
和
犯痪桂涛杭
诞胃