Как использовать совпадения в теге условий в файле Web.config на IIS7? - PullRequest
0 голосов
/ 14 августа 2011

Я хочу преобразовать эти строки apache .htaccess в web.cofig:

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

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

с этими кодами я могу перенаправить весь запрос с помощью www.даже если на моем сайте слишком много доменов.

1 Ответ

0 голосов
/ 19 апреля 2012

Я исследую и нашел свой ответ.для использования переменных в условиях мы можем использовать {C: 1}.это 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]

Удачи

...