2010-01-06 103 views
2

我敢肯定,這不能做,但是我正在尋找一個黑客或辦法把一個+在一個文件夾的名稱,如我可以在IIS文件夾中加一個+號嗎?

http://www.mysite.com/cats+dogs/Default.aspx

我使用的是IIS 7,並試圖創建一個虛擬目錄來實現這一目標,並沒有奏效。我不允許將%2B放入資源管理器文件夾或虛擬文件夾名稱中。

任何想法如何我可以破解這個工作?我們已經有小冊子上打印了一個網址,並想知道是否有某種方法可以替代它或一些可能做到的技巧。

編輯:我能夠解決這個問題,通過創建一個帶有+的虛擬文件夾,然後重定向到一個URL,它指向一個帶有內容的虛擬目錄。

+2

「我們已經有印有小冊子的宣傳冊」 - 哎呀! – 2010-01-06 15:42:20

+0

另請參閱:http://stackoverflow.com/q/3375789/12484 – 2014-02-28 20:16:06

回答

5

你可能有一些運氣做一個url重寫。這可以通過web.config或httpmodule輕鬆完成。

看起來您仍然需要使用下面提到的空間或IIS修補程序來處理+字符問題,但爲了將來的某些靈活性,您可以隨時包含將URL重新映射到文件的URL重寫。

<httpModules> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </httpModules> 

    <rewriter> 
    <rewrite url="~/cats dogs/Default.aspx" to="~/MyRealFile.aspx" /> 
    </rewriter> 
1

只需在文件夾名稱中添加一個空格:「貓狗」。

空格字符使用加號字符進行編碼,所以當服務器看到加號字符時,它將獲得帶有空格的文件夾。

+0

這是過去的樣子,但它在大多數現代瀏覽器和默認IIS設置中都不起作用。 – Thorarin 2010-01-06 15:54:34

7

IIS 7.0 Breaking changes for ASP.NET 2.0 applications in Integrated Mode

下面是從頁,這說明解決方法/修復相關的摘錄。

請求限制和URL處理 以下變化導致瞭如何IIS 過程傳入請求及其 網址,由於 附加限制。

11)包含在路徑(未 查詢字符串)未編碼 「+」字符請求的URL被默認

拒絕你將得到HTTP錯誤404.11 - 未找到:請求濾波 模塊被配置爲否認請求 包含雙重轉義 序列。發生

此錯誤的原因IIS是由 默認配置爲拒絕嘗試 到雙重編碼的URL,這通常代表 試圖執行一個 規範化攻擊。

解決方法:

1)需要在URL路徑 的「+」字的使用 可以通過設置 禁用此驗證的應用程序在 的 system.webServer /安全/的requestFiltering的allowDoubleEscaping屬性 配置部分中的 應用程序的web.config。然而, 這可能使你的應用更加 容易受到惡意網址:

<system.webServer> 
    <security> 
      <requestFiltering allowDoubleEscaping="true" /> 
    </security> 
</system.webServer> 
相關問題