Apache-2.4
如何使用 ProxyHTMLURLMap 重寫 url?
我的網址是這種形式
/sites/site-name/Subpath-2/page-name.page /sites/site-name/Subpath-3/Subpath-4/index.page
這應該被重寫為
/sitename/subpath/pagename
(刪除擴展.page
名)子路徑也可以有多個文件夾,即(/sites/site-name/Subpath-2/…./page-name.page)如果我們有一個以 index.page 結尾的 url,那麼我們必須刪除 index.page 例如:
/sites/site-name/...subpath.../index.page
應該是/sites/site-name/...subpath.../
我嘗試過以這種方式使用反向引用
ProxyHTMLURLMap "\/sites\/([A-Za-z-0-9]+|-)\/([A-Za-z-0-9]+|-)\/([A-Za-z-0-9]+|-)\.page$" "/$1/$2/$3" R
對於以 index 結尾的網址
ProxyHTMLURLMap "\/sites\/([A-Za-z-0-9]+|-)\/([A-Za-z-0-9]+|-)\/(index)\.page$" "/$1/$2/" R
但是我需要重寫 URL,這樣子路徑可以很多,即它應該適用於任何可以具有三個以上子路徑的 URL, 它需要為
/sites/site-name/Subpath-3/Subpath-4/index.page
/sites/site-name/Subpath-1/Subpath-2/ 工作子路徑 3/home.page
ProxyHTMLURLMap "\/sites((\/([A-Za-z-0-9]+|-))*)\/([A-Za-z-0-9]+|-)\.page$" "$1/$4" R
把它分開:
((\/([A-Za-z-0-9]+|-))*)
是任意數量的路徑組件 - 零個或多個 - 跟隨/sites
。每個組件都以/
. 所有路徑組件的整個字元串都儲存在$1
.- 最後是
([A-Za-z-0-9]+|-)\.page$
,以 . 結尾的文件名.page
。它的結果儲存在 中$4
,因為它從表達式中的第 4 個左括號開始。如果您希望在文件名和文件名之間至少需要一個路徑組件
/sites
,而不是零個或多個,您可以*
將+
.