[英]Simple URL Rewrite on IIS
我有1個 IIS服務器,我想用來托管2個不同的網站(都在端口80上)。
我一直在嘗試許多不同的組合(包括重定向),每次都會出現問題(重定向循環,404,根本不起作用等等)
我認為我需要的規則是這樣的:
- match any URL
- condition 1: match {HTTP_HOST} to my site URL
- condition 2: discard if {REQUEST_URI} is present
- action: rewrite URL to /dir1/index.html
(repeat for site 2)
這里的問題似乎是條件2永遠不是真的(我應該用什么來匹配{REQUEST_URI}
的缺席 ?
這是完整的XML:
<rewrite>
<rules>
<rule name="RuleForSite1" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mysite1\.com$" />
<add input="{REQUEST_URI}" pattern=".+" negate="true" />
</conditions>
<action type="Rewrite" url="dir1/index.html" />
</rule>
<rule name="RuleForSite2" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mysite2\.com$" />
<add input="{REQUEST_URI}" pattern=".+" negate="true" />
</conditions>
<action type="Rewrite" url="dir2/index.html" />
</rule>
</rules>
</rewrite>
我終於弄明白了。
事實證明, {REQUEST_URI}
實際上從來都不是空的,而是包含/
什么時候什么也沒有。
我還發現重定向更好。
這是我的最終設置:
<rewrite>
<rules>
<rule name="RuleForSite1" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mysite1\.com$" />
<add input="{REQUEST_URI}" pattern="^/$"" />
</conditions>
<action type="Redirect" url="dir1/index.html" />
</rule>
<rule name="RuleForSite2" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mysite2\.com$" />
<add input="{REQUEST_URI}" pattern="^/$"" />
</conditions>
<action type="Redirect" url="dir2/index.html" />
</rule>
</rules>
</rewrite>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.