2014-04-28 52 views
0

我使用IIS重写模块。我有几个静态文件,并将它们储存在IIS重写:为什么IIS显示重写URL?

网站/静态/ XYZ/ABC

我添加IIS重写规则如下:

regular expression pattern: 

xyz/.+ 

rewrite URL: 

/static/{R:0} 

首先,如果I型(带结束/)

http://mysite/xyz/abc/ 

一切似乎工作得很好。浏览器地址栏显示我输入的内容。

其次,如果I型(不带结尾/)

http://mysite/xyz/abc 

的网站仍正常显示的内容,但浏览器地址栏的变化(通过添加静态和结尾/)

http://mysite/static/xyz/abc/ 

如何让IIS在第二种情况下不显示/静态?

感谢和问候。

UPDATE

正则表达式被使用。

  <rule name="inauguralball"> 
       <match url="inauguralball(/.*)?" /> 
       <action type="Rewrite" url="/static/{R:0}" /> 
      </rule> 
+0

你能发布从web.config中复制的实际规则吗? –

+0

布兰登,我按照你的要求发布了它。谢谢你帮助我! – curious1

+0

浏览器不应该更改地址栏中显示的URL。这只会发生在重定向规则,而不是重写规则。你确定你没有任何其他可能相冲突的重定向规则吗? –

回答

3

我想我在这里找到了你的答案:http://support.microsoft.com/kb/298408/EN-US。如果省略斜线并且IIS找到与您的请求相匹配的目录,则会为您执行重定向。我相信这是您的重定向来自哪里,从而将您发送到/ static/inauguralball /。请注意,IIS还为您添加了斜线,因为它检测到该目录存在。

你能否确定你的hrefs总是指向/ inauguralball /(带有斜线),以便IIS不会为你执行自动重定向?

+0

布兰登,感谢您的信息。这是我猜到的,但你给出了明确的答案。非常感谢!!! – curious1