Apache-2.2

Apache/Tomcat 重定向

  • April 16, 2013

我們有一個來自供應商的 Tomcat 應用程序,在它前面執行 Apache,但我們無權訪問應用程式碼。我們在應用程序周圍有自己的單點登錄,因此如果使用者在應用程序中點擊“註銷”,使用者將被帶到未使用的“登錄”螢幕。我們想將該登錄螢幕重定向到預設的 Tomcat 頁面,但我似乎無法獲得正確的語法。

我已經嘗試了一些沒有運氣的調整(轉義 / 等)。有沒有人有任何想法?我已經有一個 HTTP 到 HTTPS 重定向工作(包含在下面的指令中)。

“註銷”連結經過一些重定向,最終結束於: http: //ourserver.com/abc/login

為簡單起見,我們希望將對登錄頁面的任何請求重定向到:http: //ourserver.com/

<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
RewriteRule ^/abc/login$ / [L]
</VirtualHost>

想通了 - 原來我在錯誤的 VirtualHost 聲明下包含了重定向指令。

在上面的範例中,我們在埠 80 虛擬主機之後直接設置了重定向規則,其唯一目的是將使用者重定向到 HTTPS。一旦使用者在 VirtualHost *443 上結束,我們的第二個重寫規則將永遠不會執行。

將上述重寫規則復製到我們的 *443 聲明中立即生效。

RewriteRule 預設假定重寫的結果是文件系統路徑。您正在告訴您的伺服器從文件系統的根目錄提供 /abc/login 服務,這可能不是您想要的,正確配置的伺服器也不會允許它。

您需要做的是添加 PT 標誌。像這樣:

RewriteRule ^/abc/login$ / [PT]

PT 標誌意味著 L,並且會導致伺服器將替換結果視為 URI,而不是文件系統路徑。

引用自:https://serverfault.com/questions/498573