
我正在重定向 URL,並且想在此過程中使用“RewriteRule”指令。
我目前有一個規則如下:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
不過,如果將區域設定添加到第一個 URL 的末尾,我也希望它能夠工作。它可能是各種不同的語言環境(絕不是靜態的),因此我希望RewriteRule 獲取第一個URL 中“.jsp”之後的所有內容,並將其放置在第二個URL 中“.zul”之後。
例如:
RewriteRule ^/application/web/reservation/index.jsp(*)$ https://application.domain.com/application2/web/reservation/audioForm.zul$1 [R,L]
我相信替換部分的語法錯誤:
(*)$ and $1 respectively
為了讓您可以看到連結在區域設定中的樣子,我在下面放置了一個範例:
https://application.domain.com/application/web/reservation/index.jsp?locale=de-DE
我想在第二個 URL 中的 .zul 之後放置“?locale=de-DE”。
誰能告訴我我做錯了什麼?任何幫助將不勝感激。
此致
答案1
其實你自己的答案並不正確。
為了匹配特定的(這裡具體的字很重要)請求參數,例如您提到的“?locale = de-DE'”的例子需要一個 RewriteCond正在做。
但在這種特定情況下,由於目標 url 未指定查詢字串,mod_rewrite 的預設行為是將原始查詢字串(無論它是什麼)附加到它,除非您指定 QSD 標誌(查詢字串丟棄)。
所以,簡單來說:
RewriteRule ^/application/web/reservation/index.jsp https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
甚至:
RewriteRule ^/application/web/reservation/index.jsp$ https://application.domain.com/application2/web/reservation/audioForm.zul [R,L]
將符合以下請求:
“/application/web/reservation/index.jsp?whatever”
,並將任何查詢字串附加到您指定的目標:
“https://application.domain.com/application2/web/reservation/audioForm.zul「因為它沒有指定查詢字串。
答案2
實際上,我在玩了幾個小時並研究了 mod_rewrite API 之後就弄清楚了。
Apache 模組 mod_rewrite - Apache HTTP 伺服器
代替:
^/application/web/reservation/index.jsp(*)$
我用了:
^/application/web/reservation/index.jsp(.*)