如何在IIS7上的Web.config文件中的条件标签中使用匹配?

时间:2011-08-14 14:16:35

标签: iis-7 web-config

我想将这个apache .htaccess行转换为web.cofig:

RewriteCond%{HTTP_HOST} ^ www。(。+)$ [NC]

RewriteRule ^(。*)$ http://%1/ $ 1 [L,R = 302]

使用这些代码,我可以使用www重定向所有请求。即使我的网站有太多域名。

1 个答案:

答案 0 :(得分:0)

我研究并找到了答案。在我们可以使用{C:1}的条件下使用变量。这是第一场比赛。我对此转换的回答是:

        <rules>
            <rule name="http Redirect" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^www\.(.*)$" />
                    <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
                </conditions>
                <action type="Redirect" url="http://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" />
            </rule>
            <rule name="https Redirect" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^www\.(.*)$" />
                    <add input="{SERVER_PORT_SECURE}" pattern="^0$" negate="true" />
                </conditions>
                <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" />
            </rule>
        </rules>

这等于:

RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteCond %{HTTPS} ^off$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,QSA,R=302]
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,QSA,R=302]

祝你好运