【发布时间】:2021-02-06 19:39:57
【问题描述】:
我在 URL 重写方面遇到了一些问题。
我有一个网站,它在 IIS10 的同一个站点中托管多个子站点。主站点有 3 个 TLD,应该重定向到主规范 TLD。
在同一个站点上,我不想重定向到我的主要 TLD 的主要 TLD 的子域的多个附加绑定。
这就是我希望 URL 重写工作的方式:
顶级域名
mydomain.com
mydomain2.com
mydomain3.com
--> mydomain2.com & mydomain3.com 应该重定向到 mydomain.com 与 HTTP 到 HTTPS。
子域
c1.mydomain.com
c2.mydomain.com
c3.mydomain.com
等等。
--> c1.mydomain.com、c2.mydomain.com、c3.mydomain.com 等...不应通过 HTTP 到 HTTPS 重定向到 mydomain.com。
这些是我的问题领域
如果我创建一个重定向 HTTP 到 HTTPS 规则,那么 mydomain2.com 和 mydomain3.com 不要拉起,因为我的 SSL 证书仅适用于 mydomain.com,我不希望 mydomain2.com 和 mydomain3.com 作为网站的网址,我只希望他们重定向到mydomain.com
如果我不创建规范规则,那么当访问 mydomain2.com 或 mydomain3.com 时,它将失败,因为这些 TLD 没有匹配的 SSL,并且 HTTP 到 HTTPS 规则将访问者发送到 HTTPS 版本的 TLD没有 HTTPS 绑定。此外,我不希望这些 URL 留在地址栏中,我希望最终域是 mydomain.com
如果我创建了规范规则,那么我的所有子域绑定现在都将重定向到 mydomain.com,这是有问题的,因为它们是被重定向的完全不同的网站。
我使用 DNN 作为 CMS,所以如果您熟悉门户,那么所有子门户现在都重定向到我的父门户,我不希望这样。
根据 Lex Li 的要求更新
规则 1) 这是用于将 HTTP 重定向到 HTTPS 的 URL 重写规则
这里的问题是我没有规范重定向到我的主域。
<rewrite>
<rules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
规则 2) 这里是 URL 重写规则 WITH canonical redirect + HTTP to HTTPS
这里的问题是subdomain.mysite.com 正在重定向到不应该的mysite.com。我看到有一个条件区域,也许有办法调整这个规则,使其不适用于我的子域?
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://example.com/{R:1}" />
</rule>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
观察:
启用规则 1:
example.com 重定向到 https://example.com(正确)
example2.com 重定向到 https://example2.com(失败 | example2.com 上没有 SSL,它应该重定向到 example.com)
sub.example.com 重定向到https://sub.example.com(正确)
启用规则 2:
example.com 重定向到 https://example.com(正确)
example2.com 重定向到 https://example.com(正确)
sub.example.com 重定向到https://example.com(失败,它应该重定向到https://sub.example.com)
【问题讨论】:
-
您能否编辑并显示您现在设置的规则以及观察到的到完整 URL 重定向的完整 URL 看起来不太好?只有这样才能成为可以回答的问题,或者你最好聘请顾问进一步讨论。
-
@LexLi 代码隐藏添加
标签: subdomain dotnetnuke iis-10 url-rewrite-module canonicalization