Linux

Apache重定向到其他頁面但不工作

  • June 26, 2018

我有一個example.conf包含以下行的虛擬主機名。

<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@myhost.com

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/app1_access.log combined
ErrorLog /var/log/httpd/app1_error.log

redirect / http://example.com/jenkins
DirectoryIndex index.html index.php
JkMount /jenkins/* failover
JkMount /jenkins failover

</VirtualHost>

我想要,如果有人點擊http://example.com它應該打開http://example.com/jenkins

我的 URL 正在重定向到

http://example.com/jenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkins

像這樣。

它是帶有 apache Web 伺服器的 Tomcat 上的 Jenkins。任何幫助將非常感激。

redirect / http://example.com/jenkins

如果重定向到同一主機,那麼這確實會導致重定向循環,因為該Redirect指令使用簡單的前綴匹配,並且匹配後的所有內容都被複製到目標 URL 的末尾。因此,您將獲得以下資訊:

  • /(初始請求)
  • /jenkins(第一次重定向)
  • /jenkinsjenkins(第二次重定向)
  • 等等

您需要改用RedirectMatch指令,以便僅匹配文件根目錄。RedirectMatch(也是 mod_alias 的一部分)使用正則表達式進行匹配,而不是前綴匹配。例如:

RedirectMatch 302 ^/$ http://example.com/jenkins

我已經包含了可選的狀態程式碼參數,以明確這是一個 302(臨時)重定向(預設)。

對伺服器配置進行任何更改後,您需要重新啟動 Apache。而且,與往常一樣,請確保您在測試之前已清除瀏覽器記憶體。

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