我需要从
重定向www.domain.de至https://domain.de -Works
http://www.domain.de至https://domain.de -Works
http://domain.de至https://domain.de - 不工作
rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
答案 0 :(得分:27)
我认为这对您有用,搜索模式具有可选的www并使用后向引用C:2重定向,规则具有仅针对非https运行的条件。
这是模式:
"^(www\.)?(.*)$"
其中:
{C:0} - www.domain.de
{C:1} - www.
{C:2} - domain.de
以下是完整的规则:
<rewrite>
<rules>
<rule name="SecureRedirect" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_HOST}" pattern="^(www\.)?(.*)$" />
</conditions>
<action type="Redirect" url="https://{C:2}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
答案 1 :(得分:2)
如果您想要比三个示例更灵活的内容,请将HTTP_HOST模式更改为:\w+\.\w+$
。这适用于所有三个示例以及其他任何示例,例如 subdomain.abcdef.domain.de 。
如果您使用此正则表达式,请将其包含在括号中或将C:1更改为C:0。
答案 2 :(得分:0)
如果您想将www重定向到非www:
<rule name="Remove WWW" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> <add input="{CACHE_URL}" pattern="*://www.*" /> </conditions> <action type="Redirect" url="{C:1}://{C:2}" redirectType="Permanent" /> </rule>
参考:http://madskristensen.net/post/url-rewrite-and-the-www-subdomain
答案 3 :(得分:0)
这对我有用:
<rule name="NameRule1" stopProcessing="true" enabled="true" >
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://example.com/{R:1}" />
</rule>
我是从https://medium.com/iis-and-windows-server/redirect-url-from-www-to-non-www-in-iis7-5-4d2909b9704
获得的答案 4 :(得分:0)
将 https://www.example.com 重定向到 https://example.com 我必须执行 2 个步骤
选择网站,点击“URL重写”->点击“添加规则”->选择“Cononcial域名”->选择您的域名(不带www)->确保规则在顶部- > 突出显示规则并单击“编辑”-> 并更新规则末尾的“重定向 URL”以包含“s”-https://example.com/{R:1}
我还必须创建一个域为 www.example.com 的新网站、新的应用程序池并选择 SSL 证书并将其指向包含以下内容的文件夹(由于某种原因 StackOverflow 不会显示我的代码粘贴在下面的重写规则,但只是谷歌 IIS 重写规则)
完成这两个步骤后,它才能按预期工作
答案 5 :(得分:-1)
这些重写规则与以下网址匹配:
他们将全部重定向到:https://example.com
由于单独的规则,这些重写规则可能会重定向两次。 (我是正则表达式的新手)
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>
<rule name="WWW" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
</conditions>
<action type="Redirect" url="https://example.com{PATH_INFO}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>