You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS下同一域名承载两个站点的最优实现方案咨询

推荐方案:IIS URL重写+反向代理实现子域到主域子目录的映射

为什么不选其他方案

  • 虚拟目录:两个站点用不同CMS,虚拟目录会继承主站点的应用池和配置,极易出现web.config节点冲突、权限隔离不足的问题,无法保证两个应用独立运行。
  • 直接修改主域绑定/添加应用程序:本质是把career站点纳入主站点的运行上下文,同样会面临配置冲突、资源依赖冲突的问题,不符合两个站点独立部署的需求。
  • 单纯重定向:只是将用户从子域跳转至主域,URL会发生变化,且子域站点内的绝对路径资源(比如图片、脚本)会出现加载异常,无法实现“通过主域子目录访问子域站点”的需求。

推荐方案:反向代理+URL重写

这个方案可以实现用户访问主域子目录时,实际请求转发到子域站点,同时自动替换响应中的子域链接为主域路径,完全满足你的需求,且保留两个站点的独立运行环境。

前置准备

  1. 安装IIS的URL重写模块和**Application Request Routing (ARR)**模块(可通过IIS管理器的“管理模块”或Web平台安装包获取)。
  2. 在IIS服务器节点下,打开“Application Request Routing Cache”,点击“服务器代理设置”,勾选“启用代理”并保存。

配置主站点(example.com)

在主站点的web.config中添加以下规则:

<configuration>
  <system.webServer>
    <rewrite>
      <!-- 反向代理规则:将/career/*路径转发到子域站点 -->
      <rules>
        <rule name="Proxy to Career Site" stopProcessing="true">
          <match url="^career/(.*)" />
          <action type="Rewrite" url="https://career.example.com/{R:1}" />
          <!-- 处理编码问题,避免响应乱码 -->
          <serverVariables>
            <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
            <set name="HTTP_ACCEPT_ENCODING" value="" />
          </serverVariables>
        </rule>
      </rules>
      <!-- 输出规则:替换响应中的子域链接为主域/career路径 -->
      <outboundRules>
        <rule name="Rewrite Career Links" preCondition="IsHtmlResponse">
          <match filterByTags="A, Img, Link, Script, Form" pattern="^https://career\.example\.com/(.*)" />
          <action type="Rewrite" value="https://example.com/career/{R:1}" />
        </rule>
        <preConditions>
          <preCondition name="IsHtmlResponse">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
          </preCondition>
        </preConditions>
      </outboundRules>
    </rewrite>
    <!-- 启用反向代理配置 -->
    <proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="true" />
  </system.webServer>
</configuration>

配置子域站点(career.example.com)

为了避免旧URL失效影响SEO,在子域站点的web.config中添加永久重定向规则:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to Main Domain" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^career\.example\.com$" />
          </conditions>
          <action type="Redirect" url="https://example.com/career/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

注意事项

  • 确保两个站点的SSL证书配置正确,主站点转发请求到子域时使用HTTPS,避免证书信任问题。
  • 测试所有子路径(比如example.com/career/job1),确认页面加载正常、资源链接正确。
  • 如果子域站点有特殊的HTTP头或会话需求,可能需要调整ARR的代理设置,确保请求头正确传递。

内容的提问来源于stack exchange,提问作者SECØND BANANA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:27:30