[英]URL Rewrite in web.config of IIS to nginx.conf
nginx的新手,完全感到困惑。
如何将此URL重写转换为nginx?
<rewrite>
<rules>
<rule name="IndexFolders" stopProcessing="true">
<match url="(.*[^/]+)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" />
</conditions>
<action type="Rewrite" url="/_index/{R:1}.html" />
</rule>
<rule name="OtherFile" stopProcessing="true">
<match url="\.\w+$" />
</rule>
<rule name="HtmlFile" stopProcessing="true">
<match url="^([^.]*[^/]+)$" />
<action type="Rewrite" url="{R:1}.html" />
</rule>
</rules>
</rewrite>
尝试使用转换器,但无法正常工作。
location / {
if (-d $request_filename){
set $rule_0 1;
}
if ($rule_0 = "1"){
rewrite /(.*[^/]+)$ /_index/$1.html last;
}
location ~* /\.\w+$ {
break;
}
rewrite ^/([^.]*[^/]+)$ /$1.html last;
}
这在我的测试环境中有效:
location / {
if (-d $request_filename){
rewrite ^/(.*[^/]+)/$ /_index/$1.html break;
}
location ~* /.*\.\w+$ {
break;
}
rewrite ^/([^.]*[^/]+)$ /$1.html break;
}
注意nginx 重写指令 :
可选标志参数可以是以下之一:
持续
停止处理当前的ngx_http_rewrite_module指令集,并开始搜索与更改后的URI相匹配的新位置;
打破
与break指令一样,停止处理当前的ngx_http_rewrite_module指令集;
因此,如果您不想在下一个循环中搜索重写的URL以匹配规则,则应使用break 。
停止处理当前的ngx_http_rewrite_module指令集。
如果在位置内指定了指令,则在该位置继续对请求的进一步处理。
这类似于URL Rewriter行为:
规则可能已启用StopProcessing标志。 启用此标志时,意味着不再处理任何后续规则,并且此规则生成的URL将传递到IIS请求管道(如果规则匹配)。 默认情况下,此标志是关闭的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.