Windows Server中IIS URL Rewrite子域名地址重写配置求助
IIS URL Rewrite 配置方案(内网Web应用域名重写)
需求场景明确
你需要实现两种重写逻辑,对应不同的规则配置:
- 场景1:用户访问
http://forkliftinspection.ourcompany.local/inspection.php时,服务器内部读取http://webservices.ourcompany.local/ForkliftInspection/inspection.php的内容(内部重写,用户看不到真实路径) - 场景2:用户访问旧地址
http://webservices.ourcompany.local/ForkliftInspection/inspection.php时,自动跳转到新域名地址(外部重定向,浏览器地址栏会变化)
前置准备
- 确保内网DNS服务器或客户端hosts文件中,
forkliftinspection.ourcompany.local已指向部署IIS的Windows Server IP。 - 在IIS的
webservices.ourcompany.local站点上,添加主机头绑定:主机名填forkliftinspection.ourcompany.local,端口80,IP选择服务器对应网卡IP。
场景1:内部重写规则配置
进入 webservices.ourcompany.local 站点的URL Rewrite模块,添加空白规则:
- 规则名称:ForkliftInspection_InternalRewrite
- 匹配URL:
- 请求路径:
Matches the Pattern - 使用:
正则表达式 - 模式:
^inspection\.php$(仅匹配指定文件;若需匹配该目录下所有PHP文件,可改为^(.+)\.php$)
- 请求路径:
- 条件(可选):
- 添加条件:输入
{HTTP_HOST},匹配类型选Matches the Pattern,模式填^forkliftinspection\.ourcompany\.local$(确保仅对新域名的请求生效)
- 添加条件:输入
- 操作设置:
- 操作类型:
Rewrite - 重写URL:
/ForkliftInspection/{R:0}(如果用匹配所有PHP文件的模式,改为/ForkliftInspection/{R:1}.php) - 勾选「追加查询字符串」和「停止处理后续规则」
- 操作类型:
场景2:外部重定向规则配置
同样在 webservices.ourcompany.local 站点的URL Rewrite模块添加规则:
- 规则名称:ForkliftInspection_Redirect
- 匹配URL:
- 请求路径:
Matches the Pattern - 使用:
正则表达式 - 模式:
^ForkliftInspection/(inspection\.php)$
- 请求路径:
- 条件:
- 添加条件:输入
{HTTP_HOST},匹配类型选Matches the Pattern,模式填^webservices\.ourcompany\.local$(仅对旧域名的请求生效)
- 添加条件:输入
- 操作设置:
- 操作类型:
Redirect - 重定向URL:
http://forkliftinspection.ourcompany.local/{R:1} - 重定向类型:选
301 Permanent(永久重定向,内网环境也可选用302临时重定向) - 勾选「追加查询字符串」和「停止处理后续规则」
- 操作类型:
原正则的问题分析
你之前用的正则 ([_0-9a-z-]+).([mycompany.local]+)/([_0-9a-z-]+)/([_0-9a-z-.php]+) 存在3个核心错误:
- 点号未转义:正则中
.代表匹配任意字符,匹配域名里的点必须用\.转义,否则会匹配其他无关字符。 - 字符组误用:
[mycompany.local]+是字符组,会匹配m/y/c/o/m/p/a/n/y/./l/o/c/a/l中的单个字符重复,而非完整的ourcompany.local域名,应该直接写ourcompany\.local。 - 文件名匹配错误:
[_0-9a-z-.php]+同样是字符组问题,会把.php拆成单个字符匹配,正确的PHP文件匹配应该是inspection\.php或者[_0-9a-z-]+\.php。
内容的提问来源于stack exchange,提问作者EndLand199
相关产品推荐
相关产品推荐

