2014-11-21 64 views
0

這已被問了幾次,但它似乎並沒有爲我工作。我想重定向像http://11.11.11.11:8008/foo/bar?baz=1這樣的網址爲https://11.11.11.11:1443/foo/bar?baz=1。只需添加S並更改端口。簡單的IIS重寫

如果用戶輸入computername.domain.local或我使用localhost瀏覽,則不會發生任何情況。它應該只針對特定的IP地址/端口重定向,並且只能通過http訪問。

原因是我的機器在內部使用443進行SSL(localhostcomputername.domain.local)。但對於源自我辦公樓外的請求,我們有一個路由器重定向。因此,他們使用端口訪問公共IP地址,並且SSL不再位於443.因此,要在平板電腦和其他位置上測試代碼,我需要使用端口瀏覽到IP地址。

回答

0

所以這是我的兩個誤解。首先,來自我公司外部的外部流量使用公司特定的IP地址和端口8008.這使他們路由到託管我的站點的實際計算機。但是,當流量通過它時,它被引導到我的機器上的端口80,而不是8008.其次,重寫中的URL表達式僅包含路徑和查詢字符串。你不能像我正在嘗試的那樣匹配那裏的完整URL。

解決方法是添加通配符到匹配項,並使用條件來擊中所需的所有內容。

<rule name="SSL on 1443" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Redirect" url="https://11.11.11.11:1443/{R:0}" redirectType="Found" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="OFF" /> 
     <add input="{HTTP_HOST}" pattern="11\.11\.11\.11" /> 
    </conditions> 
</rule> 
0

這個怎麼樣?

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^11\.11\.11\.11$ 
RewriteCond %{SERVER_PORT} 8008 
RewriteRule ^(.*)$ https://11.11.11.11:1443/$1 [R]