gpt4 book ai didi

IIS 7 Url Rewriting 和两个域

转载 作者:行者123 更新时间:2023-12-01 03:01:07 25 4
gpt4 key购买 nike

我正在写这个问题,在这个过程中,它迫使我更努力地思考,我自己回答了它,尽管我仍然不完全理解它为什么解决它。

我在共享主机上有一个帐户,注册了 2 个域。我正在使用 Asp.Net 堆栈来运行一些东西,例如博客和我计划最终启动的另一个站点。我的两个域都指向根;第一个是我用来注册的原件,第二个是我添加的根域指针。这是我希望它的行为方式:

目录结构:

Root                      (www.domain1.com)Root --\ Blog             (www.domain1.com/blog)Root --\ Site2            (should be directed here if www.domain2.com)Root --\ Site2 --\ Junk   (www.domain2.com/junk)

Right now, if you type in www.domain1.com or www.domain1.com/blog, that behaves as expected and I am fine with that. For www.domain2.com, I have the rewrite rule configured like this(from the web.config):

<rule name="Domain2">
<match url="(.*)(/)?" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="(www\.)?domain2\.com" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="/site2/{R:1}" />
</rule>

如果主机是 domain2.com,那么该规则应该匹配任何路径,选择请求资源的路径并正确格式化。因此,当有人在 IIS 中键入 www.domain2.com/junk/default.aspx 时,这会在用户不知道的情况下解析为 www.domain2.com/site2/junk/default.aspx。除非用户没有在子文件夹中键入尾部斜杠,否则这主要按照宣传的方式工作。 IE:

www.domain2.com(作品)
www.domain2.com/(有效)
www.domain2.com/junk/(有效)
www.domain2.com/junk(不起作用!) IIS 7 在这里失去了它的大脑并将其格式化为 www.domain2.com/site2/junk 因为第二个请求是自动发出的尾随斜杠和 404 发生。

因此,我将操作更新为:
<action type="Rewrite" url="/site2/{R:1}/" />

这似乎已经解决了它,但是为什么 IIS 7 现在不吐出 www.domain2.com/junk2/default.aspx/?它怎么知道不要在文档扩展名后附加斜杠?

最佳答案

www.domain2.com/junk 不起作用,因为您在 match 中添加了斜杠,但要匹配的实际 url 不包含它。它只包含“垃圾”。

您还需要添加:
<rule name="Domain2" stopProcessing="true">
所以如果找到匹配,它不会评估其他规则。我怀疑您可能会看到让您感到困惑的是您设置的其他规则。

关于IIS 7 Url Rewriting 和两个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com