对于模糊的标题感到抱歉,问题太复杂了,无法用简短的短语来概括......
我正在尝试设置以下重定向规则:
blog.mydomain.net/en/something
:重定向到www.mydomain.com/something
blog.mydomain.net/fr/something
:重定向到www.mydomain.fr/something
blog.mydomain.net/*
:重定向到www.mydomain.com
规则3正在运行,但似乎跳过了规则1和规则2,因此始终应用规则3。这是我的web.config规则:
<!-- Canonicalize mydomain.com to www.mydomain.com -->
<rule name="CanonicalHostNameRule_en" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^mydomain\.com$" />
</conditions>
<action type="Redirect" url="http://www.mydomain.com/{R:1}" />
</rule>
<!-- Canonicalize mydomain.fr to www.mydomain.fr -->
<rule name="CanonicalHostNameRule_fr" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^mydomain\.fr$" />
</conditions>
<action type="Redirect" url="http://www.mydomain.fr/{R:1}" />
</rule>
<!-- Redirect blog.mydomain.net/en/something to www.mydomain.com/something -->
<rule name="RedirectBlog_en" enabled="true" stopProcessing="true">
<match url="^/en(/.*)?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
</conditions>
<action type="Redirect" url="http://www.mydomain.com/{R:1}" />
</rule>
<!-- Redirect blog.mydomain.net/fr/something to www.mydomain.fr/something -->
<rule name="RedirectBlog_fr" enabled="true" stopProcessing="true">
<match url="^/fr(/.*)?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
</conditions>
<action type="Redirect" url="http://www.mydomain.fr/{R:1}" />
</rule>
<!-- Redirect blog.mydomain.net/* to www.mydomain.com -->
<rule name="RedirectBlog_other" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^blog\.mydomain\.net$" />
</conditions>
<action type="Redirect" url="http://www.mydomain.com/" />
</rule>
<!-- Wordpress-specific rules -->
...
我不明白为什么跳过规则RedirectBlog_en
和RedirectBlog_fr
;我测试了正则表达式,它们工作正常。
有人能发现问题吗?
编辑:如果我禁用第3条规则(RedirectBlog_other),那么规则1和2工作正常......怎么可能,因为规则1和2在规则3之前执行?
答案 0 :(得分:1)
好的,我知道了!
首先,事情并没有像我想象的那样发生;当我禁用规则3时,规则1和2 不正在工作:我仍然被重定向到我的实际域,但这是由Wordpress完成的,而不是我的规则。
其次,我匹配网址的模式是错误的:输入中包含前导'/'不,所以我的规则根本不匹配。