IIS上的简单URL重写 [英] Simple URL Rewrite on IIS

查看:744
本文介绍了IIS上的简单URL重写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 1 个IIS服务器,我想用来托管 2 个不同的网站(均在端口80上).
我一直在尝试许多不同的组合(包括重定向),每次都出现故障(重定向循环,404,根本无法正常工作等)

I have 1 IIS server that I would like to use to host 2 different web sites (both on port 80).
I've been trying many different combinations (including redirects) and every time, something was breaking (redirect loops, 404, simply not working, etc...)

我认为我需要的规则是这样的:

The rule I think I need goes something like this:

 - 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}缺勤?

The problem here seems to be that condition 2 is never true (what should I use to match the absence of {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}从未真正为空,但其中没有任何内容时包含/.
我还发现重定向效果更好.

I finally figured it out.
It turns out that {REQUEST_URI} is never actually empty, but contains / when there's nothing in it.
I also found that a redirect worked out better.

这是我的最终设置:

<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>

这篇关于IIS上的简单URL重写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆