【问题标题】:Using web.config to redirect based on domain and language parameter使用 web.config 根据域和语言参数进行重定向
【发布时间】:2018-02-06 15:22:07
【问题描述】:

我有一个以两种语言提供服务的网站。我为每种语言都有一个域名,例如www.englishsite.com 和 www.frenchsite.com

应用程序知道根据添加此 URL 参数来更改语言: TemplateCulture=en-CA 或 TemplateCulture=fr-CA。

但是,我在 web.config 中将子域映射到特定语言的 URL 重写功能收效甚微。

以下是我尝试使用的规则。这对我不起作用,我希望有人能指出我正确的方向!

<rewrite>
  <rules>
    <rule name="redirect" enabled="true">
      <match url="(.*)" />
        <conditions>
          <add input="{HTTP_HOST}" negate="true" pattern="^http://www.englishsite.com$" />
        </conditions>
      <action type="Redirect" url="http://www.englishsite.com/?{R:0}TemplateCulture=en-CA" appendQueryString="true" redirectType="Permanent" />
    </rule>
    <rule name="redirect2" enabled="true">
      <match url="(.*)" />
        <conditions>
          <add input="{HTTP_HOST}" negate="true" pattern="^http://www.frenchsite.com$" />
        </conditions>
        <action type="Redirect" url="http://www.frenchsite.com/?{R:0}TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" />
    </rule> 
  </rules>
</rewrite>

【问题讨论】:

    标签: iis iis-7 web-config


    【解决方案1】:

    如果我理解正确,您正在努力实现:

    • 如果用户访问主页http://www.englishsite.com,它应该会收到重定向到http://www.englishsite.com/?TemplateCulture=en-CA&amp;{...something...}
    • 如果用户访问主页http://www.frenchsite.com,它应该会收到重定向到http://www.frenchsite.com/?TemplateCulture=fr-CA&amp;{...something...}

    那么你的规则应该是这样的:

    <rule name="redirect" enabled="true">
      <match url="^$" />
        <conditions>
          <add input="{HTTP_HOST}"  pattern="^www.englishsite.com$" />
        </conditions>
      <action type="Redirect" url="http://www.englishsite.com/?TemplateCulture=en-CA" appendQueryString="true" redirectType="Permanent" />
    </rule>
    <rule name="redirect2" enabled="true">
      <match url="^$" />
        <conditions>
          <add input="{HTTP_HOST}" pattern="^www.frenchsite.com$" />
        </conditions>
        <action type="Redirect" url="http://www.frenchsite.com/?TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" />
    </rule>  
    

    以上规则说明:

    • &lt;match url="^$" /&gt; 将只匹配主页

    • &lt;add input="{HTTP_HOST}" pattern="^www.englishsite.com$" /&gt;会在域名www.englishsite.com时创建条件

    • &lt;action type="Redirect" url="http://www.frenchsite.com/?TemplateCulture=fr-CA" appendQueryString="true" redirectType="Permanent" /&gt; 将使用特定于文化的查询字符串进行重定向。我删除了 {R:0},因为 IIS URL 重写模块会自动附加它,因为您设置了 appendQueryString="true"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-24
      • 2015-09-03
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多