如何在PowerShell中排除指定的URL Rewrite规则?
美国、香港服务器
如何在PowerShell中排除指定的URL Rewrite规则?
09-17 来源:
管理员身份打开 PowerShell,先加载模块
Import-Module WebAdministration
$siteName="Default Web Site" # 替换你的站点名称
## 场景 A:**临时排除(禁用)某一条指定规则,保留规则配置**
就是让这条规则不再执行,其他 rewrite 规则正常运行(最常用)
# 指定要排除/禁用的规则名
$ruleName = "HTTP强制跳转HTTPS"
Set-WebConfigurationProperty `
-PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="$ruleName"]" `
-Name "enabled" `
-Value "False"
# 回收应用池生效
$poolName = (Get-WebSite $siteName).applicationPool
Restart-WebAppPool $poolName
恢复启用这条规则:
Set-WebConfigurationProperty `
-PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="$ruleName"]" `
-Name "enabled" `
-Value "True"
Restart-WebAppPool $poolName
## 场景 B:**在某条重写规则内,排除部分 URL(访问这些 URL 时跳过这条规则)**
规则本身保持启用,但匹配指定路径就不执行该规则(比如 HTTP 转 HTTPS,但排除 /.well-known 验证目录)
$ruleName="HTTP强制跳转HTTPS"
Add-WebConfigurationProperty `
-PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="$ruleName"]/conditions" `
-Name "." `
-Value @{
input="{REQUEST_URI}"
pattern="^/\.well-known/"
negate="true"
}
Restart-WebAppPool $poolName
参数说明:
- `negate="true"`:**不匹配该正则才执行重写**;匹配`/.well-known/`就跳过这条规则
- 多目录示例 pattern:`^/(api|uploads|\.well-known)/`
## 场景 C:**增加前置优先级规则:匹配指定 URL 直接跳过后续全部重写规则**
在规则列表最顶部新增一条,命中路径后停止所有剩下的 rewrite 规则
Add-WebConfigurationProperty -PSPath "IIS:\Sites\$siteName" -Name "." `
-Filter "/system.webServer/rewrite/rules" `
-Value @{
name="SkipAllRewrite_ExcludeUrl"
stopProcessing="true"
match=@{url="^(api|uploads)/.*"}
action=@{type="None"}
}
Restart-WebAppPool $poolName
## 查看当前所有规则状态(校验)
Get-WebConfiguration -PSPath "IIS:\Sites\$siteName" -Filter "system.webServer/rewrite/rules/rule" | Select name,enabled
## 场景 D:彻底删除指定规则(永久移除,谨慎)
$ruleName="HTTP强制跳转HTTPS"
Remove-WebConfigurationProperty `
-PSPath "IIS:\Sites\$siteName" `
-Filter "/system.webServer/rewrite/rules/rule[@name="$ruleName"]" `
-Name "."
Restart-WebAppPool $poolName
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快