求助:在IIS中实现子域名到指定物理文件夹的路由配置
实现Apache .htaccess到IIS web.config的规则迁移
首先确保你的IIS服务器已经安装了URL重写模块(IIS默认未预装,需通过服务器管理器添加)。
将以下web.config文件放置在应用根目录/wwwroot下,即可实现与原.htaccess完全一致的子域名映射逻辑:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <!-- 匹配api.mysite.com和src.mysite.com,重写到public目录 --> <rule name="Backoffice & Frontend API" stopProcessing="true"> <match url="^(.*)" /> <conditions logicalGrouping="MatchAny"> <add input="{HTTP_HOST}" pattern="^(api\.mysite\.com)$" ignoreCase="true" /> <add input="{HTTP_HOST}" pattern="^(src\.mysite\.com)$" ignoreCase="true" /> </conditions> <action type="Rewrite" url="public/{R:1}" /> </rule> <!-- 其他域名/请求,若未指向dist则重写到dist目录 --> <rule name="Any Other to Dist" stopProcessing="true"> <match url="^(.*)" /> <conditions> <add input="{REQUEST_URI}" pattern="^/dist" negate="true" /> </conditions> <action type="Rewrite" url="/dist/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
规则说明:
- 第一条规则通过
{HTTP_HOST}匹配api.mysite.com和src.mysite.com,将所有请求重写到public目录下的对应路径,ignoreCase="true"对应原规则的NC,stopProcessing="true"对应L,IIS默认会跳过内部子请求,无需额外设置对应NS的参数。 - 第二条规则检查请求路径是否以
/dist开头(negate="true"表示取反),若不是则重写到/dist目录下的对应路径,同样用stopProcessing="true"终止后续规则处理。
内容的提问来源于stack exchange,提问作者jssDev
相关产品推荐
相关产品推荐

