网址屏蔽?也许?

时间:2016-06-18 03:54:49

标签: asp.net iis

在IIS上运行.net webapp。

我遇到了以前没有必要处理过的事情。我们的合作伙伴或客户在我们的域名中拥有自己的“页面”。目前URL是www.mydomain.com/?code=partnercode,但为了便于在名片上使用,他们希望它更像www.mydomain.com/partnername,我不知道如何做到这一点。

我知道我们可以在Apache

的htaccess中执行以下操作
RewriteRule ^partnername$ index.php?code=partnerid [L]

我想知道在web.config中是否有某种方法可以做到这一点?必须有一些东西,但我不确定在哪里寻找它。我已经尝试了那些在线htaccess到web.config代码转换器,它失败了。另一件事是我宁愿不必更改我们已在DB中拥有的partnerID。

我在本网站上的另一个问题上发现了这个问题,但我认为它不会做我需要它做的事情。它将更改用户点击页面的浏览器中的URL,但我也希望可以使用www.mydomain.com/partnername URL访问它。

if ( $_SERVER['REQUEST_URI'] == '/index.php?code=partnerid') {
echo '<script type="text/javascript">window.history.pushState("", "", "/partnername");</script>';
}

1 个答案:

答案 0 :(得分:0)

IIS具有部分支持您的方案的扩展,称为URL Rewrite

我部分说过,因为您可以使用它来重写从www.mydomain.com/partnernamewww.mydomain.com/?code=partnername的网址。它不支持的内容(至少我认为它不支持)是将合作伙伴名称映射到合作伙伴代码(除非你的合作伙伴数量很少,你可以为每个合作伙伴添加重写规则)。

这是一篇展示fraction of what you can do with URL Rewrite

的文章

在您的情况下,如果要将www.mydomain.com/partnername重写为www.mydomain.com/?code=partnername,您的规则配置可能如下所示(未在IIS上测试):

<rewrite>
  <rules>
    <rule name="Rewrite to query string">
      <!-- I'm using hardcoded text, but it is regular expression and you can
           write very advanced conditions -->
      <match url="^(partner)" />
      <!-- changes incoming url /partner to ?code=partner -->
      <action type="Rewrite" url="?code={R:1}" />
    </rule>
  </rules>
</rewrite>