2013-05-15 132 views
3

我需要在IIS中創建一個URL重寫規則如下:IIS重寫虛擬文件夾

來源:

http://hostname/virtual_path_folder/myisapi.dll?a=1&b=1 

要:

http://hostname/myisapi.dll?a=1&b=1 

基本上,我只是想如果可能的話隱藏virtual_path文件夾。

+0

這或許是可能的。你使用什麼IIs版本? – cheesemacfly

+0

嗨。 7.5。謝謝 – Technomorph

+0

你需要這個規則才適用於'myisapi.dll?a = 1&b = 1'的請求?或任何網址? – cheesemacfly

回答

6

你可以用2條以下規則去:

<rules> 
    <rule name="Redirect if virtual_path_folder" stopProcessing="true"> 
     <match url="^virtual_path_folder/(.*)$" /> 
     <action type="Redirect" url="{R:1}" /> 
    </rule> 
    <rule name="Rewrite to sub folder"> 
     <match url="^.*$" /> 
     <action type="Rewrite" url="virtual_path_folder/{R:0}" /> 
    </rule> 
</rules> 

第一個,Redirect if virtual_path_folder,將重定向開始virtual_path_folder/每個請求。它會阻止任何人使用子文件夾訪問您的內容。

第二個重寫任何請求(^.*$)到子文件夾:virtual_path_folder/{R:0}

+0

謝謝你完美的作品。 – Technomorph

+0

@cheesemacfly我有一個類似的問題來解決。您的解決方案效果很好,但如果我有一個virtual_path_folder_B和virtual_path_folder_C,該規則不能應用?我嘗試添加''但是它並沒有做到這一點! – MaxSC

+0

@ MaxS-Betclic如果請求的url是http:// yourwebsite.com/virtual_path_folder_C'並且顯示'virtual_path_folder_C'的內容,您希望避免使用'Rewrite'? – cheesemacfly

0

我曾嘗試數次以得到這個工作 - 我我只是不能這樣做呢?

我沒有收到錯誤 - 但它不會從URL中刪除ices328w10?

的網址是: http://chrissgaraglino.com/icws328w10/index.cfm

這裏是我的,而文件:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules>  
       <clear /> 
       <rule name="Redirect if icws328w10" stopProcessing="false"> 
      <match url="^icws328w10/(.*)$" /> 
      <action type="Redirect" url="{R:1}" /> 
      </rule> 
       <rule name="LowerCaseRule1" stopProcessing="true"> 
        <match url="[A-Z]" ignoreCase="false" /> 
        <action type="Redirect" url="{ToLower:{URL}}" /> 
        <conditions logicalGrouping="MatchAny"> 
         <add input="{REQUEST_FILENAME}" pattern="(.*?)\.css$" negate="true" /> 
        </conditions> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration>