Show Menu
主題×

關於重寫規則菜單

使用「重寫規則」功能表來設定編目和搜尋URL和標題規則。

關於編目清單儲存URL規則

「編目URL規則」會指定如何重寫它在Web內容中遇到的URL。 您可以指定不限數量的規則和條件,並可以控制所遇到URL的任何部分。
編目規則對於重寫URL的動態部分最有用,例如作業識別碼,此識別碼對每位造訪您網站的客戶都是唯一的。 您也可以使用重寫規則,從搜尋自動機隱藏URL的部分,例如查詢參數。 依預設,不會指定任何規則,也不會執行URL重寫。
當網站編目時,內嵌內容URL會儲存在要編目之其他網頁的臨時清單中。 在將URL新增至此清單之前,會先套用商店重寫規則。 通常,「商店」重寫規則用於從URL移除作業階段ID或強制執行特定的作業階段ID以進行編目。 當搜索自動機從清單中檢索URL時,檢索重寫規則將用於再次操作該URL的部分。 通常,擷取規則會用來將時間敏感資料插入URL。 這個最終URL可用來從您的網站擷取頁面。
通常,您只使用「商店URL規則」。 只有當URL包含動態資料(如作業ID),且該動態資料會隨著時間而變更以維持有效時,才需要擷取URL規則。 在這種情況下,您會使用「儲存URL規則」,從所遇到的URL取得資料的最新狀態。 然後,當搜索自動機嘗試檢索頁面時,您使用「檢索URL規則」將該資料添加到每個URL。
每個規則都以重寫規則(RewriteRule)指令和一個或多個可選重寫條件(RewriteCond)指定。 規則的順序很重要。 規則集會依規則循環。 當規則符合時,它會循環執行任何對應的重寫條件。 以下列方式指定編目URL規則:
RewriteCond TestString CondPattern [Flags] 
RewriteRule Pattern Substitution [Flags]

遇到內嵌的URL時,搜尋自動機會嘗試將URL與每個編目規則的模式相符。 如果模式匹配,重寫引擎將查找相應的RewriteCond指令。 如果沒有條件,則URL會以由「替代」字串構成的新值取代,並繼續規則集中的下一個規則。 如果條件存在,則會依其列出順序加以處理。 重寫引擎嘗試將條件模式(CondPattern)與測試字串(TestString)相匹配。 如果兩者符合,則會處理下一個條件,直到沒有其他條件可用為止。 如果所有條件都符合,則URL會以規則中指定的替代項目取代。 如果條件未滿足,則完整條件集和相應規則將失敗。

關於RewriteRule指令

RewriteRule指令具有以下格式:
           
<i>RewriteRule Pattern Substitution [Flags]</i> 
        

Pattern 可以是POSIX規則運算式,會套用至目前的URL。 「目前的URL」可能與原始要求的URL不同,因為舊版規則可能已比對並變更URL。
請參閱 規則運算式
您不能使用"not"字元('!')來為模式加上首碼。 「not」字元可讓您否定模式,即只有在目前的URL不符合此模式時,才會為true。 當比對負面模式或作為最終預設規則時,可使用"not"字元。
不能在模式中同時使用"not"字元和分組的萬用字元。 此外,當替代字串包含$N時,您無法使用否定的模式。
可以使用括弧在陣列中建立反參照,該反參照可由「替代」(Substitution)和「CondPattern」(CondPattern)參照。
替代 : URL由替代字串取代,其中包含:
純文字檔案:傳遞的文字未變更。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^https:// ([^/]*) (.*)$ https://${tolower: $1} $2.
  • RewriteCond Backreferences 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0 <= N <= 9)。
變數:這些變數的格式為%,其中NAME_OF_VARIABLE是已定義變數名稱的字串。 有關設 *[E]* 置環境變數的詳細資訊,請參閱標籤。
函式:這些函式的格式為$,其中NAME_OF_FUNCTION如下:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL —— 對密鑰中的所有字元 編碼
  • 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變;空格會轉譯為'+',而所有其他字元則會轉換為其%xx URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
有一個特殊的替代字串:這 '-' 意味著"不能替代" 字 '-' 串通常與C(鏈)標幟搭配使用,讓您在進行替代之前,將URL與數種模式相符。
旗標
(可選)將標幟括在方括弧中 [] 。 多個標幟以逗號分隔。
旗標
說明
'last|L'
最後一個規則。
停止重寫進程,不應用任何附加重寫規則。 使用此標幟可防止對目前URL進行任何進一步處理。
'next|N'
下一輪。
使用上次重寫規則(而非原始URL)的URL,重新執行重寫程式(從第一個重寫規則開始)。 小心別製造死循環!
'chain|C'
與下一個規則連結。
將目前規則連結至下一個規則(也可以將其連結至下一個規則,依此類推)。 如果規則匹配,則替代進程照常繼續。 如果規則不符合,則會跳過所有後續的連結規則。
'nocase|NC'
沒案子。
當模式與目前的URL相符時,讓模式不區分大小寫(即,'A-Z'和'a-z'之間沒有差異)。
'skip|S=num'
略過下一個規則。
如果目前的規則相符,此標幟會強制重寫引擎略過規則集中的下一個num規則。 使用此標幟來建立偽if-then-else結構。 then-clause的最後一個規則變為skip=N,其中N是else-clause中的規則數。
注意: 此標幟與'chain|C'標幟不同!)
'env|E=VAR:VAL'
設定環境變數。
建立設定為值VAL的環境變數"VAR",其中VAL可包含展開的規則運算式反向參照$N和%N。 您可多次使用此標幟來設定多個變數。 變數稍後可透過%{VAR}在下列RewriteCond模式中取消參考。
使用此標幟可移除並記住URL中的資訊。
儲存重寫規則和檢索重寫規則共用變數值。 由於這種行為,您可在遇到並儲存內嵌URL時,將變數設為時間敏感的sessionid值。 從臨時儲存清單中檢索下一個URL時,可以在檢索該頁之前向其添加最新的sessionid值。
具有函式的RewriteRule示例
假設您有區分大小寫的伺服器,可處理字串,而 "www.mydomain.com" 且不 "www.MyDomain.com" 同。 為了讓您的伺服器正常運作,請確定網域一律為 "www.mydomain.com" "www.MyDomain.com." ,即使某些檔案包含參照「要執行此動作」的連結,您仍可使用下列規則:
RewriteRule  ^https:// 
<b>([^/]*)</b> 
<i>(.*)</i>$  https://${tolower:$1}$2

此重寫規則使用函 tolower 數重寫URL的網域部分,以確保其一律為小寫,如下所述:
  1. 「模式」 (^https://([^/]*)(.*)$) 包含一個回溯 ([^/]*) 參考,可比對URL中介於和 https:// 第一個字元之 / 間的所有字元。 此模式也包含第二個反向參照, (.*) 與URL中所有剩餘字元相符。
  2. 「替代 (https://${tolower:$1}$2) 」會通知搜尋引擎使用第一個回參考上的 tolower 函式重寫URL, (https:// ${tolower:$1}$2) 而未改變其餘的URL (https://${tolower:$1} $2)
因此,表單的URL被 https://www.MyDomain.com/INTRO/index.Html 重寫為 https://www.mydomain.com/INTRO/index.Html

關於RewriteCond指令

RewriteCond指令定義規則條件。 當RewriteCond在RewriteRule之前時,只有在規則的模式與當前標題匹配且附加條件適用時,才使用規則。 重寫條件採用下列形式:
           
<i>RewriteCond TestString CondPattern [Flags]</i> 
        

TestString 是一個字串,可以包含以下結構:
純文字檔案:傳遞的文字未變更。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^https:// ([^/]*) (.*)$ https://${tolower: $1} $2
  • RewriteCond Backreferences 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0<= N <= 9)。
變數:這些變數的格式為%,其中NAME_OF_VARIABLE可以是已定義變數名稱的字串。 如需設定變數的 [E] 詳細資訊,請參閱「重寫規則」標幟。
函式:這些函式的格式為$,其中NAME_OF_FUNCTION如下:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL會對索引鍵中的所有字元進行編碼。 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'保持不變,空格會轉譯為'+',而所有其他字元則會轉換為其 %xx URL編碼等同字元。
  • 取消逸出會將'+'轉換回空格,所有 %xx URL編碼字元都轉換回單一字元。
CondPattern是標準的 Extended規則運算式,包含一些新增內容。 模式字串可以加上前置字 ! 元(驚嘆號)以指定非相符模式。 您可使用下列其中一個特殊變數,而非實際規則運算式字串:
您也可以在所有測試前加上驚嘆號('!')否定其意義。
CondPattern字串
說明
'<CondPattern'
從詞法上講,就更少了。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString的詞法小於CondPattern,則為true。
'>CondPattern'
詞法上更大。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString的詞法大於CondPattern,則為true。
'=CondPattern'
詞法上等於。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString在詞法上等於CondPattern,即兩個字串完全相同(字元逐字元),則為true。 如果CondPattern僅為""(兩個引號),則會比較TestString和空字串。
標幟 (選用)以方括弧括住標幟 [] 。 多個標幟以逗號分隔。
旗標
說明
'nocase|NC'
沒案子。
此標幟可讓測試不區分大小寫,即在擴充的TestString和CondPattern中,'A-Z'和'a-z'之間沒有差異。
'ornext|OR'
或者下一個條件。
使用此標幟,將規則條件與本機OR(而非隱式AND)結合。 若沒有此標幟,您必須多次寫入第二個/規則。
範例
有些網頁會在訪客第一次造訪網站時指派「sessionid」 CGI變數。 此變數可用來識別訪客,而當訪客瀏覽網站時,會一併傳遞變數。 由於搜尋自動機看起來像是您網站的訪客,因此會指派一個「sessionid」編號。 搜尋自動機會保留此單一「sessionid」值,即使第二個網站頁面嘗試指派新值亦然。 為了確保這一點,您需要兩個重寫規則。
第一個規則用於識別和儲存sessionid變數:
RewriteCond  %{sessionid}  !.+ 
RewriteRule  ^.+sessionid= 
<b>([^&#]+)</b>.*$  -   
<i>[E=sessionid:$1]</i>

RewriteRule使用E標幟 ([E=sessionid:$1]) 將sessionid CGI參數的目前值指派給變數 sessionid 。 引 $1 用第一個反向引用,它包含在RewriteRule模式中的第一組括弧之間 ([^&#]+)
規則運算 ^&#]+ 式會比對單字與下一個字元之間 sessionid 的URL部 **&**&#x200B;or&#x200B;**#** 分。 由於此RewriteRule僅用於為sessionid變數建立初始值,因此不會重寫。 請注意,規則的「替代」欄位設定為 - 指示不需要重寫。
RewriteCond會檢查變 sessionid 數( %{sessionid} )。 如果連一個字元(!..+),則RewriteRule會符合。
使用此規則,URL會讀取為 https://www.domain.com/home/?sessionid=1234&function=start 並指派值 1234 至變數 sessionid
第二個規則用於重寫所有與下列RewriteRule模式匹配的URL:
RewriteRule   
<b>^(.+)</b>sessionid=[^&#]+ 
<i>(.*)$</i>  $1sessionid=%{sessionid}$2

RewriteRule模式包含兩個反向參照: (.+) (.*) 。 第一個回參考會比對之前的所有字元 sessionid 。 第二個反向引用與終止或之後的所有字元 & 匹配 #
「替代」模式使用第一個回參考,接著字串"sessionid=",接著第一個規則所定義的作業階段ID變數值,接著第二個回參考,來重寫 %{sessionid} URL。 ($1sessionid=%{sessionid} $2)
請注意,此RewriteRule不包含RewriteCond。 因此,會對所有符合「重寫規則模式」的URL進行重 。 因此,如果sessionid變數( %{sessionid} )的值 1234 為,表單的URL會重寫 https://www.domain.com/products/?sessionid=5678&function=buy https://www.domain.com/products/?sessionid=1234&function=buy

確認

重寫引擎軟體最初由Apache Group開發,用於Apache HTTP伺服器項目(https://www.apache.org/)。

新增編目清單儲存URL規則

您可以新增編目清單儲存URL規則,以指定如何重寫網頁內容中遇到的URL。 您可以指定不限數量的規則和條件,並可以控制所遇到URL的任何部分。
若要新增編目清單儲存URL規則
  1. 在產品功能表上,按一下 Settings > Rewrite Rules > Crawl List Store URL Rules
  2. 在欄位 Crawl List Store URL Rules 中,輸入您要的規則。
    允許以「#」(雜湊)字元開頭的空白行和註解行。
  3. (可選)在頁 Crawl List Store URL Rules 面的欄位中,輸 Test Crawl List Store URL Rules 入您要測試其編目規則的測試URL,然後按一下「測 試」
  4. 按一下​ 「儲存變更」
  5. (可選)如果要預覽結果,請重建分段網站索引。
  6. (可選)在頁 Crawl List Store URL Rules 面上,執行下列任一項作業:

關於編目清單擷取URL規則

「編目URL規則」會指定如何重寫網頁內容中遇到的URL。 您可以指定不限數量的規則和條件,並可以控制所遇到URL的任何部分。
在客戶看到規則的效果之前,請務必重建網站索引。
編目規則對於重寫URL的動態部分最有用,例如作業識別碼,此識別碼對每位造訪您網站的客戶都是唯一的。 您也可以使用重寫規則,從搜尋自動機隱藏URL的部分,例如查詢參數。 依預設,不會指定任何規則,也不會執行URL重寫。
當網站編目時,內嵌內容URL會儲存在要編目之其他網頁的臨時清單中。 當搜索自動機從清單中檢索URL時,檢索重寫規則用於操作該URL的部分。 通常,擷取規則會用來將時間敏感資料插入URL。 這個最終URL可用來從您的網站擷取頁面。
只有當URL包含動態資料(如作業ID),且該動態資料隨時間變更而維持有效時,才需要擷取重寫規則。 在這種情況下,您會使用「商店重寫規則」,從所遇到的URL取得資料的最新狀態。 然後,當搜索自動機檢索頁面時,可以使用「檢索重寫規則」將該資料添加到每個URL。
每個規則都以重寫規則(RewriteRule)指令和一個或多個可選重寫條件(RewriteCond)指定。 規則的順序很重要。 規則集會依規則循環。 當規則符合時,它會循環執行任何對應的重寫條件。 以下列方式指定編目URL規則:
RewriteCond TestString CondPattern [Flags] 
RewriteRule Pattern Substitution [Flags]

遇到內嵌的URL時,搜尋自動機會嘗試將URL與每個編目規則的模式相符。 如果模式匹配,重寫引擎將查找相應的RewriteCond指令。 如果沒有條件,則URL會以由「替代」字串構成的新值取代,並繼續規則集中的下一個規則。 如果條件存在,則會依其列出順序加以處理。 重寫引擎嘗試將條件模式(CondPattern)與測試字串(TestString)相匹配。 如果兩者符合,則會處理下一個條件,直到沒有其他條件可用為止。 如果所有條件都符合,則URL會以規則中指定的替代項目取代。 如果條件未滿足,則完整條件集和相應規則將失敗。

關於RewriteRule指令

RewriteRule指令具有以下格式:
           
<i>RewriteRule Pattern Substitution [Flags]</i> 
        

Pattern 可以是POSIX規則運算式,會套用至目前的URL。 「目前的URL」可能與原始要求的URL不同,因為舊版規則可能已比對並變更URL。
請參閱 規則運算式
您不能使用"not"字元('!')來為模式加上首碼。 「not」字元可讓您否定模式,即只有在目前的URL不符合此模式時,才會為true。 當比對負面模式或作為最終預設規則時,可使用"not"字元。
不能在模式中同時使用"not"字元和分組的萬用字元。 此外,當替代字串包含$N時,您無法使用否定的模式。
可以使用括弧在陣列中建立反參照,該反參照可由「替代」(Substitution)和「CondPattern」(CondPattern)參照。
替代 : URL由替代字串取代,其中包含:
純文字檔案:傳遞的文字未變更。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^https:// ([^/]*) (.*)$ https://${tolower: $1} $2.
  • RewriteCond Backreferences ​這些匹配的RewriteCondCattern中的反向引用採用%N格式(0 <= N <= 9)。
變數:這些變數的格式為%,其中NAME_OF_VARIABLE是已定義變數名稱的字串。 有關設定 # ,請參閱E標籤。
函式:這些函式的格式為$,其中NAME_OF_FUNCTION如下:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL —— 對密鑰中的所有字元 編碼
  • 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變;空格會轉譯為'+',而所有其他字元則會轉換為其%xx URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
有一個特殊的替代字串:'-'表示「無替代」。 '-'字串常會與C(chain)標幟搭配使用,讓您在發生替代之前,將URL與數種模式相符。
旗標
旗標
說明
'last|L'
最後一個規則。
停止重寫進程,不應用任何附加重寫規則。 使用此標幟可防止對目前URL進行任何進一步處理。
'next|N'
下一輪。
使用上次重寫規則(而非原始URL)的URL,重新執行重寫程式(從第一個重寫規則開始)。 小心別製造死循環。
'chain|C'
與下一個規則連結。
將目前規則連結至下一個規則(也可以將其連結至下一個規則,依此類推)。 如果規則匹配,則替代進程照常繼續。 如果規則不符合,則會跳過所有後續的連結規則。
'nocase|NC'
沒案子。
當模式與目前的URL相符時,讓模式不區分大小寫(即,'A-Z'和'a-z'之間沒有差異)。
'skip|S=num'
略過下一個規則。
如果目前的規則相符,此標幟會強制重寫引擎略過規則集中的下一個num規則。 使用此標幟來建立偽if-then-else結構。 then-clause的最後一個規則變為skip=N,其中N是else-clause中的規則數。
注意: 此標幟與'chain|C'標幟不同!)
'env|E=VAR:VAL'
設定環境變數。
建立設定為值VAL的環境變數"VAR",其中VAL可包含展開的規則運算式反向參照$N和%N。 您可多次使用此標幟來設定多個變數。 變數稍後可透過%{VAR}在下列RewriteCond模式中取消參考。
使用此標幟可移除並記住URL中的資訊。
儲存重寫規則和檢索重寫規則共用變數值。 由於這種行為,您可在遇到並儲存內嵌URL時,將變數設為時間敏感的sessionid值。 從臨時儲存清單中檢索下一個URL時,可以在檢索該頁之前向其添加最新的sessionid值。
具有函式的RewriteRule示例
假設您有區分大小寫的伺服器,會以不同方式處理字串"www.mydomain.com"和"www.MyDomain.com"。 為了讓您的伺服器正常運作,請確定網域一律為「www.mydomain.com」,即使某些檔案包含參照「www.MyDomain.com」的連結亦然。 若要這麼做,您可使用下列規則:
RewriteRule  ^https:// 
<b>([^/]*)</b> 
<i>(.*)</i>$  https://${tolower:$1}$2

此重寫規則使用函 tolower 數重寫URL的網域部分,以確保其一律為小寫,如下所述:
  1. 模式包 (^https://([^/]*)(.*)$) 含一個背參照 ([^/]*) ,它與URL中第一個字元之間 https:// 的所有字元 / 相符。 此模式也包含第二個反向參照, (.*) 與URL中所有剩餘字元相符。
  2. 「替代 (https://${tolower:$1}$2) 」會通知搜尋引擎使用第一個回參考上的 tolower 函式重寫URL, (https:// ${tolower:$1}$2) 而未改變其餘的URL (https://${tolower:$1} $2)
因此,表單的URL被 https://www.MyDomain.com/INTRO/index.Html 重寫為 https://www.mydomain.com/INTRO/index.Html

關於RewriteCond指令

RewriteCond指令定義規則條件。 當RewriteCond在RewriteRule之前時,只有在規則的模式與當前標題匹配且附加條件適用時,才使用規則。 重寫條件採用下列形式:
           
<i>RewriteCond TestString CondPattern [Flags]</i> 
        

TestString 是一個字串,可以包含以下結構:
純文字檔案:傳遞的文字未變更。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^https:// ([^/]*) (.*)$ https://${tolower: $1} $2
  • RewriteCond Backreferences 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0<= N <= 9)。
變數:這些變數的格式為%,其中NAME_OF_VARIABLE可以是已定義變數名稱的字串。 如需設定變數的 [E] 詳細資訊,請參閱「重寫規則」標幟。
函式:這些函式的格式為$,其中NAME_OF_FUNCTION如下:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL會對索引鍵中的所有字元進行編碼。 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變更,空格會轉換為'+',而所有其他字元則會轉換為其%x URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
CondPattern是標準的 Extended規則運算式,包含一些新增內容。 模式字串可以前置詞'!' 字元(驚嘆號),以指定不符合的模式。 您可使用下列其中一個特殊變數,而非實際規則運算式字串:
您也可以在所有測試前加上驚嘆號('!')否定其意義。
CondPattern字串
說明
'<CondPattern'
從詞法上講,就更少了。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString的詞法小於CondPattern,則為true。
'>CondPattern'
詞法上更大。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString的詞法大於CondPattern,則為true。
'=CondPattern'
詞法上等於。
將CondPattern視為純字串,並從語義上與TestString比較。 如果TestString在詞法上等於CondPattern,即兩個字串完全相同(字元逐字元),則為true。 如果CondPattern僅為""(兩個引號),則會比較TestString和空字串。
標幟 (選用)以方括弧括住標幟 [] 。 多個標幟以逗號分隔。
旗標
說明
'nocase|NC'
沒案子。
此標幟可讓測試不區分大小寫,即在擴充的TestString和CondPattern中,'A-Z'和'a-z'之間沒有差異。
'ornext|OR'
或者下一個條件。
使用此標幟,將規則條件與本機OR(而非隱式AND)結合。 若沒有此標幟,您必須多次寫入第二個/規則。
範例
有些網頁會在訪客第一次造訪網站時指派「sessionid」 CGI變數。 此變數可用來識別訪客,而當訪客瀏覽網站時,會一併傳遞變數。 由於搜尋自動機看起來像是您網站的訪客,因此會指派一個「sessionid」編號。 搜尋自動機會保留此單一「sessionid」值,即使第二個網站頁面嘗試指派新值亦然。 為了確保這一點,您需要兩個重寫規則。
第一個規則用於識別和儲存sessionid變數:
RewriteCond  %{sessionid}  !.+ 
RewriteRule  ^.+sessionid= 
<b>([^&#]+)</b>.*$  -   
<i>[E=sessionid:$1]</i>

RewriteRule使用E標幟 ([E=sessionid:$1]) 將sessionid CGI參數的目前值指派給變數 sessionid 。 引 $1 用第一個反向引用,它包含在RewriteRule模式中的第一組括弧之間 ([^&#]+)
規則運 ^&#]+ 算式會比對單字與下一個​* sessionid # ​字元之間的URL部分。 由於此RewriteRule僅用於為sessionid變數建立初始值,因此不會重寫。 請注意,規則的「替代」欄位設定為 - 指示不需要重寫。
RewriteCond會檢查變 sessionid 數( %{sessionid} )。 如果連一個字元(!..+),則RewriteRule會符合。
使用此規則,URL會讀取為 https://www.domain.com/home/?sessionid=1234&function=start 並指派值 1234 至變數 sessionid
第二個規則用於重寫所有與下列RewriteRule模式匹配的URL:
RewriteRule   
<b>^(.+)</b>sessionid=[^&#]+ 
<i>(.*)$</i>  $1sessionid=%{sessionid}$2

RewriteRule模式包含兩個反向參照: (.+) (.*) 。 第一個回參考會比對之前的所有字元 sessionid 。 第二個反向引用與終止或之後的所有字元 & 匹配 #
「替代」模式使用第一個回參考,接著字串"sessionid=",接著第一個規則所定義的作業階段ID變數值,接著第二個回參考,來重寫 %{sessionid} URL。 ($1sessionid=%{sessionid} $2)
請注意,此RewriteRule不包含RewriteCond。 因此,會對所有符合「重寫規則模式」的URL進行重 。 因此,如果sessionid變數( %{sessionid} )的值 1234 為,表單的URL會重寫 https://www.domain.com/products/?sessionid=5678&function=buy https://www.domain.com/products/?sessionid=1234&function=buy

確認

重寫引擎軟體最初由Apache Group開發,用於Apache HTTP伺服器項目(https://www.apache.org/)。

新增編目清單擷取URL規則

您可以新增編目清單擷取URL規則,以指定在Web內容中遇到的URL如何重寫。 只有當URL包含動態資料(例如作業階段ID),且動態資料隨時間變更而維持有效時,才需要擷取重寫規則。
若要新增編目清單擷取URL規則
  1. 在產品功能表上,按一下 Settings > Rewrite Rules > Crawl List Retrieve URL Rules
  2. 在欄位 Crawl List Retrieve URL Rules 中,輸入您要的規則。
    允許以「#」(雜湊)字元開頭的空白行和註解行。
  3. (可選)在頁 Crawl List Retrieve URL Rules 面的欄位中,輸 Test Crawl List Retrieve URL Rules 入您要測試其編目規則的測試URL,然後按一下「測 試」
  4. 按一下​ 「儲存變更」
  5. (可選)如果要預覽結果,請重建分段網站索引。
  6. (可選)在頁 Crawl List Retrieve URL Rules 面上,執行下列任一項作業:

關於編目標題規則

「編目標題規則」指定在Web內容中遇到的標題儲存在搜尋索引中之前,如何加以重寫。
例如,您可以使用重寫規則來移除標題的一部分,例如組織名稱。 當網站編目時,遇到的標題會儲存在暫存緩衝區中。 不過,在將標題新增至此緩衝區之前,會先套用標題規則。 依預設,網站搜尋/銷售沒有編目標題規則,也未進行標題修改。
在客戶看得到規則的效果之前,請重建您的網站索引。
您可以使用「步驟記錄」功能,快速回復對「編目標題規則」所做的任何變更。
規則可包含兩個主要元素:rewriteRule和可選的RewriteCond。 您可以指定不限數目的規則和條件。 這些規則的順序很重要,因為規則集會依規則循環。 當規則符合時,它會循環執行任何(可選)對應的重寫條件。 以下列方式指定「編目URL」規則:
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i> 
 
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i>

遇到標題時,搜索自動機會嘗試將標題與每個編目規則的「模式」(Pattern)匹配。 如果模式匹配,重寫引擎將查找相應的RewriteCond指令。 如果沒有條件,則URL會以由「替代」字串構成的新值取代,並繼續規則集中的下一個規則。 如果條件存在,則會依其列出順序加以處理。 重寫引擎嘗試將條件模式(CondPattern)與測試字串(TestString)相匹配。 如果兩者符合,則會處理下一個條件,直到沒有其他條件可用為止。 如果所有條件都符合,則URL會以規則中指定的替代項目取代。 如果條件未滿足,則完整條件集和相應規則將失敗。
在文字方塊中輸入「編目URL規則」,然後按一下「儲存變更」。 允許以「#」(雜湊)字元開頭的空白行和註解行。 若要測試搜尋規則,您可以在「測試重寫規則」文字方塊中輸入測試URL,然後按一下「測試」。

RewriteRule指令

每個RewriteRule指令都定義一個重寫規則。 規則依其列出順序套用。 重寫規則採用下列形式:
RewriteRule Pattern Substitution [Flags]

Pattern can be a POSIX regular expression, hit is applied to the current title. 「目前的標題」與原始標題不同,因為舊版規則已經相符和變更。
請參閱 規則運算式
您可以使用"not"字元('!')來為模式加上首碼。 「not」字元可讓您否定模式,即只有在目前標題不符合模式時,才使其為true。 當比對負面模式或作為最終預設規則時,可使用"not"字元。 注意:不能在模式中同時使用"not"字元和分組的萬用字元。 此外,當替代字串包含$N時,您無法使用否定的模式。
可以使用括弧建立可由「替代」(Substitution)和「CondPattern」(CondPattern)引用的反向參照。
替代 :標題由替代字串替換。 字串可包含下列項目:
純文字檔案——通過未更改的文本。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule回參考
    這些匹配返回對應RewriteRule模式中的引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
  • RewriteCond回參考
    這些匹配返回上次匹配的RewriteCondCondPattern中的引用,格式為%N(0 <= N <= 9)。
變數這些為%格式的變數,其中NAME_OF_VARIABLE可以是定義變數名稱的字串。 有關設 [E] 置環境變數的詳細資訊,請參閱標籤。
函式以下是${NAME_OF_FUNCTION格式的函式:key},其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
有一個特殊的替代字串:'-'表示「無替代」。 '-'字串通常適用於C(鏈)標幟,可讓您在發生替代之前,將標題與數種模式相符。
標幟 (選用)
標幟括在方括弧 [] 中,而多個標幟以逗號分隔:
旗標
說明
'last|L'
最後一個規則。
停止重寫進程,不應用任何附加重寫規則。 使用此標幟可防止進一步處理目前標題。
'next|N'
下一輪。
使用來自上一個重寫規則的標題(而非原始標題)重新運行重寫進程(從第一個重寫規則再次開始)。 小心別造成死循環。
'chain|C'
與下一個規則連結。
將目前規則連結至下一個規則(也可以將其連結至下一個規則,依此類推)。 如果規則匹配,則替代進程照常繼續。 如果規則不符合,則會跳過所有後續的連結規則。
'nocase|NC'
沒案子。
當模式與目前標題相符時,使模式不區分大小寫(亦即,'A-Z'和'a-z'之間沒有差異)。
'skip|S=num'
略過下一個規則或規則。
如果目前的規則相符,此標幟會強制重寫引擎略過規則集中的下一個num規則。 使用它來建立偽if-then-else結構。 then-clause的最後一個規則變為skip=N,其中N是else-clause中的規則數。 (注意:這與'chain|C'標幟不同!)
'env|E=VAR:VAL'
設定環境變數。
建立設定為值VAL的環境變數"VAR",其中VAL可包含規則運算式回參考、$N和%N,並加以擴充。 您可多次使用此標幟來設定多個變數。 變數稍後可透過%{VAR}在下列RewriteCond模式中參考。 使用此標幟可移除並記住標題中的資訊。

RewriteCond指令(可選)

RewriteCond指令定義規則條件。 當RewriteCond在RewriteRule之前時,只有在規則的模式與當前標題匹配且附加條件適用時,才使用規則。
重寫條件指令採用以下形式:
RewriteCond TestString CondPattern [Flags] 

TestString 是可包含下列結構的字串:
純文字檔案——通過未更改的文本。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 有兩種類型的反向參照:
  • RewriteRule Backreferences這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
  • RewriteCond回溯參考這些符合的回溯參考位於上個相符的RewriteCondCondPattern中,格式為%N(0 <= N <= 9)。
變數這些為%格式的變數,其中NAME_OF_VARIABLE可以是定義變數名稱的字串。 有關設 [E] 置環境變數的詳細資訊,請參閱標籤。
函式這些函式的格式為$,其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL會對索引鍵中的所有字元進行編碼。
  • 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變更,空格會轉換為'+',而所有其他字元則會轉換為其%x URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
CondPattern是標準的 Extended規則運算式,包含一些新增內容。 模式字串可以前置詞'!' 字元(驚嘆號),以指定不符合的模式。 您可使用下列其中一個特殊變數,而非實際的規則運算式字串。
您可以在所有測試前加上驚嘆號('!')否定其意義。
CondPattern字串
說明
'<CondPattern'
從詞法上來說,它就更少了。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上小於 CondPattern ,則為true。
'>CondPattern'
詞法上更大。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 凌駕於 CondPattern上,則 為true。
'=CondPattern'
從詞法上講是相等的。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上等於 CondPattern ,即兩個字串完全相同(字元逐字元),則為true。 如 果CondPattern 僅為""(兩個引號),則會比較 TestString 和空字串。
標幟 (選用)
標幟括在方括弧 [] 中,而多個標幟以逗號分隔:
旗標
說明
'nocase|NC'
沒案子。
使測試不敏感。 也就是說,在擴充的 TestString和 CondPattern中,'A-Z'和'a-z'之間沒有差 別。
'ornext|OR'
或者下一個條件。
使用此標幟,將規則條件與本機OR(而非隱式AND)結合。 若沒有此標幟,您必須多次寫入第二個/規則。
範例
假設您有一個標準標題格式的公司網站:「My Company」後面接著連字型大小,接著是頁面特定的說明(例如「My Company - Welcome」或「My Company - News」)。 您想要從標題中去除「My Company - 」,並在索引網站時將整個標題轉換為大寫字母。
以下重寫規則使用函式頭將標題的描述性部分僅重寫為大寫:
RewriteRule  ^My[[:blank:]]Company[[:blank:]]-[[:blank:]] 
<b>(.*)</b>$  ${toupper: 
<b>$1</b>}

規則的「模式」 (^My[[:blank:]]Company[[:blank:]]-[[:blank:]] (.*)) 包含與「 (.*) 我的公司-」後面的標題內容相符的回參考。 請記住,帶有括弧()的陣列的部分周圍會建立可由替代引用的反向引用。 在此範例中,替代(${toupper: $1 })使用toupper函式重寫該回溯參考( $1 )。
因此,"My Company - Welcome"表單的標題被改寫為"WELCOME"。
確認
重寫引擎軟體最初由Apache Group開發,用於Apache HTTP伺服器項目(https://www.apache.org/)。

新增編目標題規則

您可以新增編目標題規則,以指定在Web內容中遇到的標題儲存在搜尋索引中之前,如何重寫這些標題。
若要新增編目標題規則
  1. 在產品功能表上,按一下 Settings > Rewrite Rules > Crawl Title Rules
  2. 在欄位 Crawl Title Rules 中,輸入您要的規則。
    允許以「#」(雜湊)字元開頭的空白行和註解行。
  3. (可選)在頁 Crawl Title Rules 面的欄位中, Test Crawl Title Rules 輸入您要測試其搜尋規則的測試URL,然後按一下「測 試」
  4. 按一下​ 「儲存變更」
  5. (可選)如果要預覽結果,請重建分段網站索引。
  6. (可選)在頁 Crawl Title Rules 面上,執行下列任一項作業:

關於搜尋URL規則

「搜尋URL規則」指定網站搜尋結果中的URL應該如何顯示。 規則會在完整URL上運作。 URL的任何部分都可加以操控,包括通常保留作業ID資訊的查詢引數。
通常,搜尋URL規則會用來將工作階段ID插入URL。 不過,您也可以使用搜尋URL規則來變更結果所顯示的網域名稱。 依預設,不會指定任何規則,也不會執行URL修改。
搜尋URL規則可包含兩個主要元素:rewriteRule和可選的RewriteCond。 當URL包含在搜尋結果中時,會使用規則來控制它。 您可以指定不限數目的搜尋URL規則和條件。 這些規則的順序很重要,因為規則集是循環規則。 當規則符合時,軟體會循環執行任何(可選)對應的重寫條件。 以下列方式指定「編目URL」規則:
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i> 
 
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i>

處理URL時,網站搜尋/銷售會嘗試將其與每個搜尋規則的「模式」相符。 如果比對失敗,重寫引擎會立即停止處理規則,並繼續處理規則集中的下一個規則。 如果模式匹配,重寫引擎將查找相應的RewriteCond指令。 如果沒有條件,URL會以新值取代。 此值由替代字串構成,並繼續與規則集中的下一個規則一起使用。 如果條件存在,則其列出順序是處理方式。 重寫引擎嘗試將條件模式(CondPattern)與測試字串(TestString)相匹配。 如果兩者符合,則會處理下一個條件,直到沒有其他條件可用為止。 如果所有條件都符合,URL會以規則中指定的替代項目取代。 如果條件未滿足,則完整條件集和相應規則將失敗。

關於RewriteRule指令

重寫規則採用下列形式:
RewriteRule  
<i>Pattern Substitution [Flags]</i>

模式 可以是POSIX規則運算式,可套用至目前的URL。 「目前的URL」可能與原始的URL不同,因為舊版規則可能已經相符並變更了它。
請參閱 規則運算式
您可以使用"not"字元('!')來為模式加上首碼。 「not」字元可讓您否定模式。 換言之,只有當目前的URL與模式不符時,才為true。 當比對負面模式或作為最終預設規則時,您可以使用"not"字元。 請注意,您不能在模式中同時使用"not"字元和分組的萬用字元。 此外,當替代字串包含$N時,您無法使用否定的模式。
可以使用括弧建立可由「替代」(Substitution)和「CondPattern」(CondPattern)引用的反向參照。
替代 : URL被替代字串完全取代,可包含下列項目:
純文字檔案——通過未更改的文本。
背向參照提供對「陣列」(Pattern)或「條件陣列」(CondPattern)的分組部分(內括弧)的訪問。 有兩種類型的反向參照:
RewriteRule Backreferences這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
RewriteCond Backreferences —— 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0 <= N <= 9)。
函式:這些函式的格式為$,其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL —— 對密鑰中的所有字元 編碼
  • 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變;空格會轉換為'+';所有其他字元都會轉換為其%xx URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
有一個特殊的替代字串:'-'表示「無替代」。 '-'字串常與C(鏈)標幟搭配使用。 它可讓您在發生替代之前,將URL與數種模式相符。
標幟 (選用)
標幟括在方括弧 [] 中,而多個標幟以逗號分隔:
旗標
說明
'last|L'
最後一個規則。
停止重寫進程,不應用任何附加重寫規則。 使用此標幟可防止對目前URL進行任何進一步處理。
'next|N'
下一輪。
使用上次重寫規則(而非原始URL)的URL,重新執行重寫程式(從第一個重寫規則開始)。 小心不要造成死循環!
'chain|C'
與下一個規則連結。
此標幟會將目前的規則系結至下一個規則,而下一個規則也可以連結至其下列規則,依此類推。 如果規則匹配,則替代進程照常繼續。 如果規則不符合,則會跳過所有後續的連結規則。
'nocase|NC'
沒案子。
此標幟會使「圖樣」不區分大小寫。 換言之,當模式與目前的URL相符時,'A-Z'和'a-z'之間沒有差異。
'skip|S=num'
略過下一個規則或規則。
如果目前的規則相符,此標幟會強制重寫引擎略過規則集中的下一個num規則。 使用它來建立偽if-then-else結構。 then-clause的最後一個規則變為skip=N,其中N是else-clause中的規則數。 (注意:這與'chain|C'標幟不同!)
'env|E=VAR:VAL'
設定環境變數。
此標幟會建立設為值VAL的環境變數「VAR」。 VAL可包含擴展的規則運算式反向引用$N和%N。 您可多次使用此標幟來設定多個變數。 變數稍後可透過%{VAR}在下列RewriteCond模式中取消參考。 使用此標幟可移除並記住URL中的資訊。
請注意,「商店重寫規則」和「擷取重寫規則」會共用變數值。 因此,在遇到並儲存內嵌URL時,您可將變數設為時間敏感的sessionid值。 從臨時儲存清單中檢索下一個URL時,可以在檢索該頁之前向其添加最新的sessionid值。
範例
假設您有區分大小寫的伺服器。 它會以不同的方式處理字串"www.mydomain.com"和"www.MyDomain.com"。 為了讓伺服器正常運作,您必須確定網域一律為「www.mydomain.com」,即使某些檔案包含參照「www.MyDomain.com」的連結。 若要這麼做,您可使用下列規則:
RewriteRule  ^https:// 
<b>([^/]*)</b> 
<i>(.*)</i>$  https://${tolower:$1}$2 

此重寫規則使用函式「tolower」重寫URL的網域部分,以確保其始終為小寫:
  1. 模式包 (^https://([^/]*)(.*)$) 含一個回溯引 ([^/]*) 用,可比對URL中"https://"和第一個"/"之間的所有字元。 該模式還包含第二個反向參 考(。*) ,這會比對URL中所有剩餘的字元。
  2. 「替代 (https://${tolower:$1}$2) 」會通知搜尋引擎使用第一個回參考上的 tolower 函式來重寫URL, (https://**${tolower:$1**}$2) 而URL的其餘部分則保持不變 (https://${tolower:$1}*$2*)
因此,表單的URL會重 https://www.MyDomain.com/INTRO/index.Html 寫為 https://www.mydomain.com/INTRO/index.Html
RewriteCond指令 (可選)
RewriteCond指令定義規則條件。 當RewriteCond在RewriteRule之前時,只有在規則的模式與當前標題匹配且附加條件適用時,才使用規則。
重寫條件指令採用以下形式:
RewriteCond  
<i>TestString CondPattern [Flags]</i>

TestString 是可包含下列結構的字串:
純文字檔案:傳遞的文字未變更。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 有兩種類型的反向參照:
  • RewriteRule Backreferences ​這些與對應的RewriteRule模式中的反向參照相匹配,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
  • RewriteCond Backreferences 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0 <= N <= 9)。
變數這些為%格式的變數,其中NAME_OF_VARIABLE可以是定義變數名稱的字串。 如需設定變數的 [E] 詳細資訊,請參閱「重寫規則」標幟。
重寫規則通常使用變數。 來自目前URL的所有CGI參數都會自動設為變數。 例如,搜尋URL會自 "https://search.atomz.com/search/?sp_a=sp00000000&sp_q="Product"&session=1234&id=5678" 動提供4個變數,可在重寫規則中參考。 在此範例中,一個變數稱為「session」,其值為「1234」,而另一個變數稱為「id」,其值為「5678」。 (其他兩個變數 sp_a sp_q 和。)您應從網頁的搜尋表單中,將所有必要的變數傳遞為隱藏欄位。 在此範例中,您應傳遞「session」和「id」值,以識別執行搜尋的網站使用者。 若要在搜尋表單上傳遞隱藏欄位,請使用類似的標籤 <input type=hidden name="session" value="1234">
函式這些函式的格式為$,其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL —— 對密鑰中的所有字元 編碼 。 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變更,空格會轉換為'+',而所有其他字元則會轉換為其%x URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
CondPattern是標準的 Extended規則運算式,包含一些新增內容。 模式字串可以前置詞'!' 字元(驚嘆號),以指定不符合的模式。 您可使用下列其中一個特殊變數,而非實際規則運算式字串。
您可以使用驚嘆號('!')來為所有這些測試加上前置詞否定其意義。
CondPattern字串
說明
'<CondPattern'
從詞法上來說,它就更少了。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上小於 CondPattern ,則為true。
'>CondPattern'
詞法上更大。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 凌駕於 CondPattern上,則 為true。
'=CondPattern'
從詞法上講是相等的。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上等於 CondPattern ,則為true。 也就是說,兩個字串完全相同(字元逐字元)。 如 果CondPattern 僅為""(兩個引號),則會比較 TestString 和空字串。
標幟 (選用)
標幟括在方括弧 [] 中,而多個標幟以逗號分隔:
'nocase|NC'(無大寫):這會讓測試不區分大小寫。 換言之,在擴充的 TestString CondPattern中,'A-Z'和'a-z'之間沒有差異
'ornext|OR'(或下一個條件):使用此項,將規則條件與局部OR(而非隱式AND)結合。 若沒有此標幟,您必須多次寫入第二個/規則。
範例
有些網頁會在客戶第一次到達網站時指派「sessionid」 CGI變數。 此變數用來識別客戶,當客戶瀏覽網站時,會隨附該變數。 由於搜尋機器人看起來就像您網站的客戶,因此會指派一個「sessionid」編號。 搜尋自動機會保留此單一「sessionid」值,即使第二個網站頁面嘗試指派新值亦然。 為確保此,您需要以下重寫規則:
RewriteCond  %{sessionid}  .+ 
RewriteRule  ^ 
<b>(.+)</b>sessionid=[^&#]+ 
<i>(.*)</i>$   
<b>$1</b>sessionid=%{sessionid} 
<i>$2</i>

RewriteRule模式包含兩個反向參照:。+) 和 (.*). 第一個回參考與"sessionid="之前的所有字元相符。 第二個反向參照與作業ID終止'&'或'#'後的所有字元相符。
替代模式使用第一個回參考,接著字串"sessionid=",接著是作業階段ID變數的值,在URL中以CGI參數傳遞,接著是第二個回參考,來重寫URL。 ($1sessionid=%{sessionid}$2)
RewriteCond 會檢查變數 sessionid (%{sessionid}) 。 如果它至少包含一個字元(.+),則RewriteRule會符合。
因此,如果搜尋查詢為 "https://search.atomz.com/search/?sp_a=sp99999999&sp_q=word&sessionid=5678" ,則會重寫所有搜尋結果URL,使「sessionid」值為「5678」,而非搜尋機器人在搜尋您的網站並儲存連結時遇到的「sessionid」值。
確認
重寫引擎軟體最初由Apache Group開發,用於Apache HTTP伺服器項目(https://www.apache.org/)。

新增搜尋URL規則

您可以新增搜尋URL規則,以指定網站搜尋結果中的URL的顯示方式。 規則會在完整URL上運作。 您可以控制URL的任何部分,包括通常保存會話ID資訊的查詢參數。
若要新增搜尋URL規則
  1. 在產品功能表上,按一下 Settings > Rewrite Rules > Search URL Rules
  2. 在欄位 Search URL Rules 中,輸入您要的規則。
    允許以「#」(雜湊)字元開頭的空白行和註解行。
  3. (可選)在頁 Search URL Rules 面的欄位中,輸 Test Search URL Rules 入您要測試其編目規則的測試URL,然後按一下「測 試」
  4. 按一下​ 「儲存變更」
  5. (可選)如果要預覽結果,請重建分段網站索引。
  6. (可選)在頁 Search URL Rules 面上,執行下列任一項作業:

關於搜尋標題規則

「搜尋標題規則」指定網站搜尋結果中標題的顯示方式。 標題的任何部分都可進行操控。
重寫規則可用於移除標題的一部分,例如組織名稱。 依預設,網站搜尋/銷售沒有標題規則,也未進行標題修改。
標題規則可包含兩個主要元素:rewriteRule和可選RewriteCond。 可以指定不限數量的規則和條件。 這些規則的順序很重要,因為規則集會依規則循環。 當規則符合時,軟體會循環執行任何(可選)對應的重寫條件。 「搜尋標題規則」的指定方式如下:
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i> 
 
RewriteCond  
<i>TestString CondPattern [Flags]</i> 
RewriteRule  
<i>Pattern Substitution [Flags]</i>

遇到標題時,網站搜尋/銷售會嘗試將其與每個編目規則的「模式」相符。 如果模式匹配,重寫引擎將查找相應的RewriteCond指令。 如果沒有任何條件,則標題將替換為由替代字串構建的新值,並繼續規則集中的下一個規則。 如果條件存在,則會依其列出順序加以處理。 重寫引擎嘗試將條件模式(CondPattern)與測試字串(TestString)相匹配。 如果兩者符合,則會處理下一個條件,直到沒有其他條件可用為止。 如果所有條件都符合,URL會以規則中指定的替代項目取代。 如果條件未滿足,則完整條件集和相應規則將失敗。

RewriteRule指令

每個RewriteRule指令都定義一個重寫規則。 規則依其列出順序套用。 重寫規則採用下列形式:
RewriteRule Pattern Substitution [Flags]

模式 POSIX規則運算式,可套用至目前標題。 「目前的標題」可能與原始標題不同,因為舊版規則可能已經符合併變更了它。
請參閱 規則運算式
您可以使用"not"字元('!')來為模式加上首碼。 「not」字元可讓您否定模式。 也就是說,只有在目前標題不符合模式時才為true。 當比對負面模式或作為最終預設規則時,可使用"not"字元。 注意:不能在模式中同時使用"not"字元和分組的萬用字元。 此外,當替代字串包含$N時,您無法使用否定的模式。
可以使用括弧建立可由「替代」(Substitution)和「CondPattern」(CondPattern)引用的反向參照。
替代 :標題被替代字串完全替換,該字串可以包含以下內容:
純文字檔案——通過未更改的文本。
背向參照 (Backreferences)提供對「陣列」(Pattern)或「條件陣列」(CondPattern)的分組部分(內括弧)的訪問。 以下是兩種類型的回溯參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
  • RewriteCond Backreferences ​這些匹配的RewriteCondCattern中的反向引用採用%N格式(0 <= N <= 9)。
變數 :這些變數為%格式的變數,其中NAME_OF_VARIABLE可以是已定義變數名稱的字串。 有關設定 # ,請參閱E標籤。 變數也可在產生搜尋結果的搜尋表單中定義。
函式 :以下是${NAME_OF_FUNCTION格式的函式:key},其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
有一個特殊的替代字串:'-'表示「無替代」。 '-'字串通常與C(鏈)標幟搭配使用,讓您在發生替代之前,將標題與數種模式相符。
標幟 (選用)
標幟括在方括弧 [] 中,而多個標幟以逗號分隔:
旗標
說明
'last|L'
最後一個規則。
停止重寫進程,不應用任何附加重寫規則。 使用此標幟可防止進一步處理目前標題。
'next|N'
下一輪。
使用來自上次重寫規則的標題(而非原始標題!)重新運行重寫進程(從第一個重寫規則再次開始)。 小心別造成死循環。
'chain|C'
與下一個規則連結。
此標幟會將目前的規則連結至下一個規則(也可以將其連結至下列規則,依此類推)。 如果規則匹配,則替代進程照常繼續。 如果規則不符合,則會跳過所有後續的連結規則。
'nocase|NC'
沒案子。
此標幟會使「圖樣」不區分大小寫。 即,當模式與當前標題匹配時,「A-Z」和「a-z」之間沒有差異。
'skip|S=num'
略過下一個規則或規則。
如果目前的規則相符,此標幟會強制重寫引擎略過規則集中的下一個num規則。 使用它來建立偽if-then-else結構。 then-clause的最後一個規則變為skip=N,其中N是else-clause中的規則數。 (這與'chain|C'標幟不同!)
'env|E=VAR:VAL'
設定環境變數。
此標幟會建立設為值VAL的環境變數"VAR",其中VAL可包含規則運算式回參考,$N和%N,將加以擴充。 您可多次使用此標幟來設定多個變數。 變數稍後可透過%{VAR}在下列RewriteCond模式中參考。 使用此標幟可移除並記住標題中的資訊。

RewriteCond指令(可選)

RewriteCond指令定義規則條件。 當RewriteCond在RewriteRule之前時,只有在規則的模式與當前標題匹配且附加條件適用時,才使用規則。
重寫條件指令採用以下形式:
RewriteCond TestString CondPattern [Flags]

TestString 是可包含下列結構的字串:
純文字檔案——通過未更改的文本。
背向參照提供對「陣列」或「條件陣列」的分組部分(內括弧)的訪問。 有兩種類型的反向參照:
  • RewriteRule Backreferences 這些匹配RewriteRule模式中的反向引用,格式為$N(0 <= N <= 9)。 例如, RewriteRule ^My[[:blank:]] (.*)$ ${toupper: $1}
  • RewriteCond Backreferences 這些匹配的RewriteCondCondPattern中的回參考,格式為%N(0 <= N <= 9)。
變數 :這些變數為%格式的變數,其中NAME_OF_VARIABLE可以是已定義變數名稱的字串。 有關設 [E] 置環境變數的詳細資訊,請參閱標籤。 變數也可在產生搜尋結果的搜尋表單中定義。
函式 :以下是形式為$的函式,其中NAME_OF_FUNCTION為:
  • tolower使所有字元都以 小寫
  • toupper會將所有字元以 大寫
  • escape URL —— 對密鑰中的所有字元 編碼
  • 字元a...z', 'A'..'Z', '0'..'9'、'*'、'-'、'.'、'/'、'@'和'_'未變更,空格會轉換為'+',而所有其他字元則會轉換為其%x URL編碼等同字元。
  • 取消轉義會將'+'轉換回空格,所有%xx URL編碼字元都轉換回單一字元。
有一個特殊的替代字串:'-'表示「無替代」。 '-'字串通常與C(chain)標幟搭配使用,讓您在進行替代之前,將URL與數種模式相符。
CondPattern (CondPattern)帶有一些添加的標準擴展規則運算式。 模式字串可以前置詞'!' 字元(驚嘆號),以指定不符合的模式。 您可使用下列其中一個特殊變數,而非實際的規則運算式字串。
所有這些測試都可加上驚嘆號('!')的前置詞否定其意義。
CondPattern字串
說明
'<CondPattern'
從詞法上來說,它就更少了。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上小於 CondPattern ,則為true。
'>CondPattern'
詞法上更大。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 凌駕於 CondPattern上,則 為true。
'=CondPattern'
從詞法上講是相等的。
CondPattern 視為純字串,並從語義上與 TestString比較 。 如果 TestString 在詞法上等於 CondPattern ,則為true。 也就是說,兩個字串完全相同(字元逐字元)。 如 果CondPattern 僅為""(兩個引號),則會比較 TestString 和空字串。
標幟 (選用)
標幟括在方括弧中 [] ,而多個標幟以逗號分隔:
旗標
說明
'nocase|NC'(無大寫)
使測試不敏感。 也就是說,在擴充的 TestString和 CondPattern中,'A-Z'和'a-z '之間沒有差 別。
'ornext|OR'(或下一個條件)
使用此項,將規則條件與局部OR(而非隱式AND)結合。 若沒有此標幟,您必須多次寫入第二個/規則。

範例

假設您有一個標準標題格式的公司網站:「My Company」後面接著連字型大小,接著是頁面特定的說明(例如「My Company - Welcome」或「My Company - News」)。 您想要從標題中去除「My Company - 」,並在索引網站時將整個標題轉換為大寫字母。
以下重寫規則使用函式頭將標題的描述性部分僅重寫為大寫:
RewriteRule  ^My[[:blank:]]Company[[:blank:]]-[[:blank:]] 
<b>(.*)</b>$  ${toupper: 
<b>$1</b>} 

規則的「模式」 (^My[[:blank:]]Company[[:blank:]]-[[:blank:]] (.*)) 包含與「 (.*) 我的公司-」後面的標題內容相符的回參考。 請記住,帶有括弧()的陣列的部分周圍會建立可由替代引用的反向引用。 在此範例中,替代(${toupper: $1 })使用toupper函式重寫該回溯參考( $1 )。
因此,"My Company - Welcome"表單的標題被改寫為"WELCOME"。
確認
重寫引擎軟體最初由Apache Group開發,用於Apache HTTP伺服器項目(https://www.apache.org/)。

新增搜尋標題規則

您可以新增搜尋標題規則,以指定網站搜尋結果中標題的顯示方式。 您可以控制標題的任何部分。
若要新增搜尋標題規則
  1. 在產品功能表上,按一下 Settings > Rewrite Rules > Search Title Rules
  2. 在欄位 Search Title Rules 中,輸入您要的規則。
    允許以「#」(雜湊)字元開頭的空白行和註解行。
  3. (可選)在頁 Search Title Rules 面上,在欄 Test Search Title Rules 位中輸入測試標題,然後按一下 測試
  4. 按一下​ 「儲存變更」
  5. (可選)如果要預覽結果,請重建分段網站索引。
  6. (可選)在頁 Search Title Rules 面上,執行下列任一項作業: