我需要为传入的请求重写“主机名”{HTTP_HOST}。是否可以使用IIS 7重写模块执行此操作? 我想将http://abc.xyz.com/ *重写为http://xyz.com/sites/abc/ *。这是针对在内部使用{HTTP_HOST}的SharePoint站点完成的。
是否有任何Url Rewriters可以让我更改IIS的{HTTP_HOST}变量?
亲切的问候,
答案 0 :(得分:9)
您可以使用IIS 7 URL重写模块2.0来更改HTTP_HOST服务器变量。有关如何执行此操作的详细信息,请参阅Setting HTTP request headers and IIS server variables。
答案 1 :(得分:3)
IIRF是免费的,允许您重写标头,包括HTTP_HOST。
我想将http://abc.xyz.com/ *重写为http://xyz.com/sites/abc/ *。这是针对在内部使用{HTTP_HOST}的SharePoint站点完成的。
您需要重写主机和Url。这使它有点复杂。在此规则集中,我按步骤执行,并使用新标头在步骤之间存储状态:
# detect whether we're using the abc host
RewriteCond %{HTTP_HOST} ^abc\.xyz\.com$
RewriteHeader Host-Needs-Rewrite: ^$ YaHuh
# rewrite the Host: header to the alt host name if necessary
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$
RewriteCond %{HTTP_HOST} ^(?!xyz\.com)(.+)$
RewriteHeader Host: .* xyz.com
# rewrite the Url to the appropriate place
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$
RewriteCond %{HTTP_HOST} ^xyz\.com$
RewriteRule /(.*)$ /sites/abc/$1 [L]
你也可以使用通配符abc部分。像这样:
# detect whether we're using the abc host
RewriteCond %{HTTP_HOST} ^([^.]+)\.xyz\.com$
RewriteHeader Host-Needs-Rewrite: ^$ %1
# rewrite the Host: header to the alt host name if necessary
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^.+$
RewriteCond %{HTTP_HOST} ^(?!xyz\.com)(.+)$
RewriteHeader Host: .* xyz.com
# rewrite the Url to the appropriate place
RewriteCond %{HTTP_HOST_NEEDS_REWRITE} ^(.+)$
RewriteCond %{HTTP_HOST} ^xyz\.com$
RewriteRule /(.*)$ /sites/%1/$1 [L]
答案 2 :(得分:2)
我不熟悉IIS 7重写模块,但ISAPI_Rewrite可以更改您想要的任何HTTP标头。有一个免费版本,对我们的网站来说足够了,对你来说可能已经足够了。
答案 3 :(得分:2)
是的,可以使用IIS 7重写模块。您可以使用GUI根据this blog post在IIS7中设置重定向 您也可以按this SO answer使用命令行 在这两个示例中,您必须拥有一个单独的网站设置,其中包含自己的主目录以及与要重定向的域的绑定。我希望这是有道理的。
答案 4 :(得分:1)
如果您想避免重定向(根据您对Evgeny的评论),唯一的另一个选择是server.transfer。使用server.transfer,处理被发送到服务器上的不同页面,客户端不知道(页面之间没有往返客户端的回程)。
除了server.transfer,实际重定向是非常典型的ISAPI_Rewrite是一种流行的工具,并且正如Evgeny所提到的那样非常好。
答案 5 :(得分:0)
更新:这将执行重定向,而不是重置变量。我不会删除这个答案,因为我觉得它很整洁,但它并不能完全回答你的想法
我以非常简单的方式为Economist.com做到这一点
一个站点有两个IIS站点,它们共享同一个webroot。主IIS网站保持正在侦听当前主机标头,例如
216.35.68.215 economist.com
并且另一个IIS站点在输入其他主机头的IP地址上进行侦听。
即。
216.35.68.215 economist.co.uk
“主目录”中的第二个网络从属设备有一个重定向设置,可以更正人们到达您网站的主机名
设置“上面输入的确切网址”和“此资源的永久重定向” 并输入您的全限定主机名条目,如下所示
http://www.economist.com $ S $ Q
$ S $ Q将维护您输入的其他主机名上的所有网址。
随意测试
http://www.economist.co.uk/world/americas/
只会推动你
http://www.economist.com/world/americas/
这意味着您至少出于这个原因,不必运行相当昂贵的IIS重写模块