2014-03-13 42 views
3

我有一個嵌套應用程序的網站。假設嵌套應用程序的虛擬目錄是'/ app'。當向www.mysite.com/app發出請求時,重定向到www.mysite.com/app/,可能是因爲虛擬目錄不是空的。我在嵌套的應用程序的web.config中設置了一個規則,用於從所有的URL中刪除尾部的斜槓,但這不會影響嵌套應用程序的根路徑。有沒有辦法(可能是IIS中的一個設置)重寫或重定向到沒有結尾斜槓的根?我已經嘗試了許多重寫和重定向規則無濟於事。從IIS中的嵌套應用程序的虛擬目錄根刪除尾部斜槓

這裏是我的去除拖尾斜槓規則:

<rule name="Remove trailing slash" stopProcessing="true"> 
    <match url="(.*)/$" /> 
    <conditions> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
</rule> 

就像我說的,這個偉大的工程,但這並不影響根系。在我想從www.mysite.com/app加載的根目錄下有一個default.aspx頁面,而不是www.mysite.com/app/。

有沒有解決這個問題的方法?

+1

如果您不知道,這似乎是IIS的一項「功能」[稱爲Courtesy Redirects](http://support.microsoft.com/default.aspx?scid=kb;en-us ; 298408)。我一直在尋找解決方法,並沒有找到任何。另見:http://stackoverflow.com/questions/8420371/why-does-iis-7-5-adds-a-trailing-slash-on-folders-can-we-disable-courtesy-redir –

回答

2

我終於可以得到答案。這在Windows Server 2008 R2,IIS 7.5上。

解決方案,在IIS:

  • 禁止對兒童應用程序的默認文檔功能。
  • 使用URL重寫,創建一條規則重寫(不定向)的空請求的Default.aspx

這裏是web.config中的規則,禁用默認文檔的條目。我使用的UI做這些,而這也正是它創造:

<defaultDocument enabled="false" /> 
<rewrite> 
    <rules> 
     <rule name="No slash root" enabled="true" stopProcessing="true"> 
      <match url="^$" /> 
      <action type="Rewrite" url="default.aspx" /> 
     </rule> 
    </rules> 
</rewrite> 

這個問題似乎從具有默認文檔幹。當我禁用默認文檔時,它從重定向改爲403禁止,這是通常的目錄瀏覽嘗試。 然後添加規則以重寫空白請求運行默認頁面,而不更改瀏覽器url。

我只是完全禁用了默認文檔。可能可以從默認文檔列表中刪除default.aspx,但我沒有嘗試。

空的請求規則是拿起www.mysite.com/app沒有別的,它執行default.aspx頁面。

我做了一些測試,以確保頁面仍在子應用程序中執行。我只是想確保它不是以某種方式神奇地認爲這是根應用程序中的文件。我通過創建各種.aspx文件來編寫和讀取良好的舊Application [「abc」]變量。子應用默認文件可以讀取子應用中另一個文件寫入的變量。一個根級文件沒有看到該變量。

有關更多規則,我使用Helicon Ape。我幾年前就開始使用他們的軟件,我更喜歡使用IIS語法的htaccess語法。我在IIS中使用上面的規則測試了這個規則,以避免結尾的斜槓,以及猿/ htaccess所有我餘下的規則,這似乎是工作。

我做了很多嘗試讓猿獨自避免重定向,無濟於事。看起來IIS首先,所以這個規則需要在IIS中,但其餘的規則不需要。

注意:嘗試這些規則時,瀏覽器往往會緩存重定向。以「隱身模式」(Chrome)工作,和/或每次清除瀏覽器緩存。請參閱https://stackoverflow.com/a/9204355/292060

相關問題