我希望为大部分互联网提供“正在进行中”页面,同时允许从几个特定的测试 IP 地址访问网站本身。
使用 IIS 7 可以实现吗?您将如何实现?
答案1
您可以使用 IP 和域限制模块,也可以下载并安装 URL Rewrite 2.0 模块并使用它。以下是 2 个示例:
我可能会采用以下设置:
使用IP 和域名限制
2个网站:
- www.website.com:无 IP 限制,“正在进行中”内容
- restricted.website.com:适当的 IP 限制,实际内容
然后我将使用根文档(index.aspx、index.php、default.aspx 等等)Request.UserHostName()
(如果是 .NET)或$_SERVER[REMOTE_ADDR]
(如果是 PHP)将用户重定向到适当的 IP 地址。
使用URL 重写模块
一种可能的替代方法是使用 URL 重写模块,以 REMOTE_ADDR 属性作为条件,重写对网站的请求。
<rule name="ip-rewrite" stopProcessing="true">
<match url="website.com" />
<conditions logicalGrouping="MatchAny">
<add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
<add input="{REMOTE_ADDR}" pattern="123.55.44.16" negate="true" />
<add input="{REMOTE_ADDR}" pattern="23.34.48.8" negate="true" />
<add input="{REMOTE_ADDR}" pattern="201.0.245.13" negate="true" />
</conditions>
<action type="Rewrite" url="http://www.website.com/inprogress/default.aspx" appendQueryString="false" />
</rule>
这将自动重写所有不来自 4 个预定义 IP 地址的请求,并将其重写为 /inprogress/default.aspx,而不是实际的网站