win2003下IIS6服務器301重定向帶參數的問題詳細解決方法
網站更換域名,把舊域名用301指到新域名來。從iis中設置url永久轉向就可以,看上去很容易,用了一會兒才發現,參數都沒有帶上。
從微軟網站上找到如下說明,果然好使:
IIS 301重定向設置
通過本次設置IIS的重定向,感覺還是比較方便的。下面就說一下IIS的重定向方法,因為網站改版是面向目錄的遷移的,所以不得不了解以下幾個微軟的IIS定向參數:
我們在設置URL重定向的時候是可以使用帶參數形式URL的,因為畢竟經常面對的URL是很多,要是就那么一兩個頁面301重定向隨便怎么整都可以了。
參數1:$S ——傳遞URL的后綴到新的URL;
參數2:$P——傳遞URL 中的query參數到新的URL,不包括問號(?)
參數3:$Q——傳遞URL中的query參數到新的URL,包括問號(?),所以在設置URL地址時,后面不要帶問號,比如:
將http://www.alapot.com/catalog.asp?cate=os&page=1,重定向到http://www.alapot.com/category.php?cate=1&page=1只需要在IIS里設置catelog.asp文件設置重定向到 category.php$Q。
參數4:$V——傳遞請求的URL,但是不包括服務器名和任何參數。
另外還有使用通配符重定向,這里不常用暫時不講解。因為我們重定向多個目錄,所以,如果單個去設置不同的定向文件,那么IIS設置起來將會非常麻煩,但是如果都定向到一個文件然后再重定向,又會因為$_SERVER['HTTP_REFERER']無法取道對應的引用頁面,結果為空,所以不得不采用上面的參數進行傳遞,這時候只需要加個參數就可以解決引用頁面的傳遞問題,比如/301.php?go=$V,這樣就可以直接在php文件中進行URL 301重定向跳轉處理了。
重定向參考 (IIS 6.0)
重定向客戶端請求是確保用戶得到正確頁面的一種方法,它適用于站點正在建設之中或已改變標識的情況。您可以將客戶端請求重定向到同一 Web 服務器上的某個目錄,或者重定向到另一個 URL。
配置 URL 和通配符重定向
可以采用編程方式配置重定向到 URL 以及通配符重定向。使用重定向變量和標志可以通過更改 HttpRedirect 配置數據庫屬性來指定目標和行為。
以下示例顯示了一個簡單重定向字符串的格式。
http://DestinationURL[,Flag[s]]
其中,DestinationURL 可以包括以下重定向變量,以將初始 URL 中相關的部分傳遞給目標 URL。在單個重定向字符串中可以使用多個變量。
變量 | 描述 | 示例 |
$S |
將請求的 URL 的后綴傳遞給新的 URL。后綴是用重定向的 URL 代替之后,初始 URL 中所保留的部分。 如果未設置 EXACT_DESTINATION 標志,則結果目標 URL 的名稱將具有所請求文件的名稱(作為文件夾名稱)以及文件名本身。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 配置為重定向到以下確切的 URL: http://fabrikam/NewScripts$S 對以下 URL 的新請求: http://fabrikam/Scripts/Program.exe 將自動重定向至以下 URL: http://fabrikam/NewScripts/Program.exe |
$P |
將初始 URL 中的參數(如 querystring 參數)傳遞至新的 URL,不包括問號 (?)。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 配置為重定向到以下 URL: http://fabrikam/NewScripts$P 對以下 URL 的新請求: http://fabrikam/Scripts/File.asp?var1=5&var2=6 將自動重定向至以下 URL: http://fabrikam/NewScriptsvar1=5&var2=6 |
$Q |
將初始 URL 中的參數(如 querystring 參數)傳遞至新的 URL,包括問號 (?)。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 配置為重定向到以下確切的 URL: http://fabrikam/NewScripts$S$Q 對以下 URL 的新請求: http://fabrikam/Scripts/File.asp?var1=5&var2=6 將自動重定向至以下 URL: http://fabrikam/NewScripts/File.asp?var1=5&var2=6 |
$V |
傳遞請求的 URL,不包括服務器名和任何參數。要包含參數,可使用 $P 或 $Q 變量及 $V 變量。 如果未設置 EXACT_DESTINATION 標志,則結果目標 URL 的名稱將具有所請求文件的名稱(作為文件夾名稱)以及文件名本身。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 配置為重定向到以下確切的 URL: http://contoso$V 對以下 URL 的新請求: http://fabrikam/Scripts/File.asp 將自動重定向至以下 URL: http://contoso/Scripts/File.asp |
使用通配符重定向
可以使用重定向通配符匹配原來 URL 中的任意數目的字符。目標 URL 以星號 (*) 和分號 (;) 開頭,成對的通配符和目標 URL 之間用分號分隔。以下示例顯示了一個使用通配符的重定向字符串的格式。
*; Wildcard1; Destination1[; Wildcard2; Destination2][, Flags]
其中,WildcardN 可以包括星號 (*) 以匹配初始 URL 中任何數量的字符,并使用下表中定義的變量($0 到 $9)將這些字符傳遞給 DestinationN。
變量 | 描述 | 示例 |
$0 到 $9 |
傳遞被請求的 URL 中與指定的通配符相匹配的部分。對于每個 Wildcard;Destination 集,通配符必須從 $0 開始。重定向字符串必須附加 EXACT_DESTINATION 標志。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 使用以下重定向字符串進行配置: *; /Scripts/*_in.asp; /NewScripts/$0.dll; /Scripts/*_out.asp; http://contoso/NewScripts/$0.dll 對以下 URL 的新請求: http://fabrikam/Scripts/data_in.asp http://fabrikam/Scripts/data_out.asp 將分別自動重定向至以下 URL: http://fabrikam/NewScripts/data.dll http://contoso/NewScripts/data.dll |
! |
不允許重定向。 如果當父目錄配置為重定向時要使文件或子目錄不被重定向,那么可以使用該變量。 |
如果映射到以下網站的虛擬目錄: http://fabrikam/Scripts 配置為重定向到以下網站之外的位置: http://fabrikam/Scripts/Commerce/Accounts 則必須免除重定向,以編程方式將被免除文件夾的重定向字符串設置為: *;! |
例如,要將所有對 /Scripts/Filename.stm 的請求重定向到名為 Default.stm 的文件,并將所有對 /Scripts/Filename.htm 的請求重定向到 Default.htm 文件,請對 /Scripts 虛擬目錄使用以下重定向請求:
*;Filename.stm;/Default.stm/Filename.htm;/Default.htm
使用重定向標志
以下標志用于擴充 URL 或通配符格式的重定向字符串。允許多個標志。標志以編程方式附加到 HttpRedirect 中的重定向字符串中,或通過選中“IIS 管理器”中的復選框進行配置。
標志 | 用戶界面復選框 | 描述 |
EXACT_DESTINATION |
上面輸入的準確 URL |
表示為 Destination 提供的值應被視作絕對目標位置。 |
CHILD_ONLY |
該目錄以下的目錄 |
通知 IIS 應只發生一次重定向,因為目標位置為初始 URL 的子目錄。此標志避免了循環。并且,僅當請求是重定向到初始 URL 的子文件夾或文件時,此標志才指示 IIS 重定向該請求。 |
PERMANENT |
資源的永久重定向 | 表示永久重定向該資源。 |
TEMPORARY |
清除“資源的永久重定向”復選框 | 表示暫時重定向該資源。 |
綜述:實現網站的整體301跳轉,設置 iis站點屬性》主目錄》重定向到URl 寫入http://www.newdomain.com$S$Q 并且選中 上面輸入的準確URL和資源的永久重定向。即可使舊域名的網址參數完整傳遞到新的域名。