如何在PowerShell中排除URL Rewrite规则?
美国、香港服务器
如何在PowerShell中排除URL Rewrite规则?
09-17 来源:
先**管理员身份**打开 PowerShell,加载 IIS 模块
Import-Module WebAdministration
$siteName="Default Web Site" # 修改成你的站点名
## 场景 1:临时禁用某条重写规则(推荐,保留规则,不生效)
只是关闭这条规则,配置还在,可以随时启用
# 禁用
Set-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="HTTP转HTTPS"]" `
-Name "enabled" -Value "False"
# 启用恢复
Set-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="HTTP转HTTPS"]" `
-Name "enabled" -Value "True"
## 场景 2:彻底删除一条重写规则(不可直接恢复)
Remove-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="HTTP转HTTPS"]" -Name "."
## 场景 3:**在现有规则里增加排除路径**(最常用:不删除规则,让某些 URL 跳过重写)
> 例如:HTTP 强制 HTTPS,但排除 `/api/`、`/uploads/`、`/.well-known/`(SSL 验证目录)
> 原理:给规则新增`conditions`条件,**不匹配排除路径才执行重写**
### PowerShell 添加排除条件示例
Add-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="HTTP转HTTPS"]/conditions" -Name "." -Value @{
input="{REQUEST_URI}"
pattern="^/(api|uploads|.well-known)/"
negate="true" # negate=true:不匹配这个pattern才继续执行规则
}
- `negate="true"`:**不匹配该路径才触发重写**,也就是匹配`/api/`就跳过这条规则
- pattern 正则:`^/(api|uploads|.well-known)/` 匹配以 /api、uploads、.well-known 开头的 URL
### 快速查看当前站点所有 rewrite 规则
Get-WebConfiguration -PSPath "IIS:\Sites\$siteName" -Filter "system.webServer/rewrite/rules/rule" | Select name,enabled
## 场景 4:前置跳过规则(推荐方案,放在规则列表最顶部)
增加一条优先级最高的规则,匹配排除路径直接停止后续所有规则,`action="None"`
Add-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" -Name "." -Filter "/system.webServer/rewrite/rules" -Value @{
name="SkipRewrite_ExcludePath"
stopProcessing="true"
match=@{url="^(api|uploads|.well-known)/.*"}
action=@{type="None"}
}
## 验证生效
修改完**回收应用程序池**
Restart-WebAppPool (Get-WebAppPoolState -Name (Get-WebSite $siteName).applicationPool)
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快