如何在IIS中为PHP网站配置URL重写,隐藏路径实现短URL展示
原有规则失效原因
- IIS URL重写模块的匹配规则仅校验域名后的路径部分,不需要写入域名前缀,你配置的
^dual-rebama.ndtv.com/[-a-zA-Z0-9_]+/[a-z]+/([a-z]+)规则无法匹配任何正常请求 - 规则逻辑完全反向:你需要实现的是「用户请求短路径时,后台映射到实际的长路径」,而原有规则是匹配长路径后重写到短路径,和需求完全相反
- 你配置的HTTP Redirect会触发浏览器3xx跳转,直接修改地址栏显示的URL,和重写隐藏路径的逻辑冲突,必须先删除
实现步骤
前置检查
确保你已经安装IIS URL重写模块,未安装的话先下载对应版本安装,完成后重启IIS管理器。
步骤1:删除原有HTTP Redirect配置
进入站点的「HTTP重定向」功能,删除所有已配置的重定向规则,保存后重启站点。
步骤2:配置路径隐藏重写规则
进入站点的「URL重写」功能,点击右侧「添加规则」,选择空白规则后按以下参数配置:
- 规则名称:
URL_Shortening - 匹配URL设置
- 请求URL:与模式匹配
- 使用:正则表达式
- 模式:
^([a-zA-Z0-9_-]+)(.*)$ - 忽略大小写:是
- 条件(可选,避免静态资源被误重写,建议添加)
- 添加第一条条件:
- 条件输入:
{REQUEST_FILENAME} - 检查是否为:不是文件
- 条件输入:
- 添加第二条条件:
- 条件输入:
{REQUEST_FILENAME} - 检查是否为:不是目录
- 条件输入:
- 添加第一条条件:
- 操作设置
- 操作类型:重写
- 重写URL:
/project_name/folder/{R:1}{R:2}(替换project_name和folder为你实际的二级、三级目录名) - 附加查询字符串:是
- 停止处理后续规则:是
配置完成后点击右上角「应用」,重启站点生效。
步骤3:配置根目录自动跳转(可选)
如果需要用户访问根域名example.com时自动跳转至example.com/login,额外添加一条规则:
- 规则名称:
Root_Redirect - 匹配URL设置
- 模式:
^$ - 忽略大小写:是
- 模式:
- 操作设置
- 操作类型:重定向
- 重定向URL:
/login - 重定向类型:301(永久)
- 停止处理后续规则:是
配置完成后应用并重启站点即可。
内容的提问来源于stack exchange,提问作者Eashan
相关产品推荐
相关产品推荐

