You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows Server下IIS Manager URL重写规则需求:URL不变显示指定页面

在Windows Server上实现URL内部重写(地址栏保持不变)

针对你需要让用户访问www.example.org/placestorun时,显示www.example.org/placrun的内容但地址栏不变化的需求,在Windows Server环境下最主流的实现方式是通过IIS的URL Rewrite模块来完成内部重写,具体步骤如下:

一、安装IIS URL Rewrite模块

  • 打开服务器管理器,选择「添加角色和功能」,在Web服务器(IIS)的角色服务中找到「URL Rewrite」并勾选安装;
  • 也可以直接从微软官方渠道下载对应Windows Server版本的URL Rewrite模块安装包进行手动安装。

二、配置重写规则(两种方式)

方式1:通过IIS图形界面配置

  • 打开IIS管理器,定位到www.example.org对应的目标站点;
  • 在右侧功能视图中找到「URL Rewrite」并双击进入;
  • 点击右侧「添加规则」,选择「空白规则」后点击确定;
  • 在规则编辑页面完成以下设置:
    • 规则名称:自定义一个易识别的名字,比如「placestorun内部重写」;
    • 匹配URL:
      • 请求的URL:选择「与模式匹配」;
      • 使用:选择「正则表达式」;
      • 模式:填写^placestorun$(如果需要支持带参数的场景,比如placestorun?id=123,可改成^placestorun(.*)$);
    • 条件:保持默认配置即可,无需额外添加;
    • 操作:
      • 操作类型:选择「重写」;
      • 重写URL:填写placrun(支持参数的场景下填写placrun{R:1}{R:1}会匹配正则中的(.*)部分,保留参数和路径后缀);
      • 追加查询字符串:勾选「是」,确保请求参数能正常传递;
    • 点击「应用」保存规则。

方式2:直接修改web.config文件

如果你习惯通过配置文件操作,可以直接在网站根目录的web.config中添加以下配置(没有该文件的话新建一个即可):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- 基础版本:匹配不带参数的placestorun -->
        <rule name="Internal Rewrite placestorun to placrun" stopProcessing="true">
          <match url="^placestorun$" />
          <action type="Rewrite" url="placrun" appendQueryString="true" />
        </rule>

        <!-- 带参数版本:支持placestorun?xxx=xxx或placestorun/xxx这类路径 -->
        <!-- <rule name="Internal Rewrite placestorun with params" stopProcessing="true">
          <match url="^placestorun(.*)$" />
          <action type="Rewrite" url="placrun{R:1}" appendQueryString="true" />
        </rule> -->
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
  • 注释部分是支持参数的版本,根据你的需求选择启用即可;
  • stopProcessing="true"表示匹配到该规则后不再处理后续规则,避免规则冲突;
  • appendQueryString="true"确保请求中的查询字符串能被传递到目标页面。

三、验证配置

配置完成后,直接在浏览器访问www.example.org/placestorun,你会发现地址栏保持不变,但页面内容已经是placrun页面的内容了。如果遇到403/404错误,检查以下几点:

  • 确认placrun页面本身存在且可正常访问;
  • 确保IIS应用程序池的身份有访问placrun相关文件的权限;
  • 检查URL Rewrite规则的正则表达式是否正确匹配请求路径。

如果你的Windows Server上使用的是Apache作为Web服务器,也可以通过mod_rewrite模块实现,在网站根目录的.htaccess文件中添加以下规则:

RewriteEngine On
# 基础匹配
RewriteRule ^placestorun$ placrun [L]
# 带参数匹配
# RewriteRule ^placestorun(.*)$ placrun$1 [L]

内容的提问来源于stack exchange,提问作者sjw0525

火山引擎 最新活动