Mat*_*rts 8 iis web-config url-rewriting iis-8
对于本地开发测试,我需要捕获所有请求www.somedomain.com/XXX(其中X是路径),并将它们发送到localhost/somevdir/XXX.
我已将此添加到我的HOSTS文件(c:\ windows\system32\drivers\etc)中:
127.0.0.1 www.mydomain.com
Run Code Online (Sandbox Code Playgroud)
然后,在IIS8(Windows 8)中,我为主机www.mydomain.com添加了绑定到我的"默认网站".这有效,我现在可以浏览www.mydomain.com/test.html并查看测试html页面.我的虚拟目录位于默认网站内.然后我在网站上添加一个URL重写URL以获取最后一点:
<rewrite>
<rules>
<rule name="mydomain.com" stopProcessing="true">
<match url="^www.mydomain.com/(.*)" />
<action type="Rewrite" url="localhost/MyVDir/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
但是 - 这不起作用.我得到一个404,所以看起来比赛永远不会发生.我尝试过重定向和重写,我试过没有正则表达式中的^和其他一些正则表达式的调整.谁能解释我做错了什么?
Mar*_*eel 16
我认为以下应该有效:
<rule name="mydomain.com" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(mydomain\.com|www\.mydomain\.com)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="http://localhost/MyVDir/{R:1}" redirectType="Temporary" />
</rule>
Run Code Online (Sandbox Code Playgroud)
任何URL上的匹配都会确保检查条件,并且HTTP_HOST服务器变量似乎是检查请求的主机名的最可靠方法.您可以删除REQUEST_FILENAME输入条件,但它可以作为一个非常好的完整性检查,以确保始终提供静态文件.
| 归档时间: |
|
| 查看次数: |
17088 次 |
| 最近记录: |