在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>';
}
答案 0 :(得分:0)
IIS具有部分支持您的方案的扩展,称为URL Rewrite。
我部分说过,因为您可以使用它来重写从www.mydomain.com/partnername
到www.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>