Apache Tomcat 重寫

Apache Tomcat 重寫

我想要做的是設定一個重寫規則,以便在輸入 URL 時它將顯示為example.com/test.

例如,如果可能的話,我正在嘗試這樣做。

我已將 CNAME 設定為site.example.com指向site.devexample.com(供應商端的開發遠端環境)

如果使用者造訪site.example.com該 URL,則該 URL 將會重寫為類似的內容example.com/test

到目前為止我所擁有的但似乎不起作用,當我訪問時site.example.com它保持原樣。

# rewrite rules for site.example.com
RewriteCond %{http_host} ^site\.example\.com [NC,OR]
RewriteCond %{http_host} ^www\.site\.example\.com [NC]
RewriteRule $ http://example.com/test/ [R,L]

我需要做反向代理然後從那裡重寫嗎?

編輯:我很抱歉,我應該解釋得更好一點。 site.example.com 歸 test.com(公司 A)所有。因此我們將 CNAME 更改為指向 site.devEnvironment.com (companyB.com)

test.com/test 是我們的伺服器和目錄,嘗試將 URL 重寫為 test.com/test 而不是 site.example.com

我們的重定向是在 httpd.conf 檔案中設定的,不確定這是否也有幫助

答案1

我猜 rewritecond 或 rewritemap 正規表示式不符。我發現那些很滑。

確保你有非常詳細的 mod_rewrite 日誌記錄(apache 2.4 set日誌等級、阿帕契2.2集重寫日誌)如果您不是網頁伺服器的管理員,這可能對您沒有幫助。

試試像這樣重寫規則:

RewriteRule ^foobar /clams/%{HTTP_HOST}/fish [R,L]

由於foobar是一個無意義的位置,因此不會幹擾實際交通。將你的瀏覽器指向foobar,它會重新導向到另一個無意義的位置並給你一個錯誤,但 URL 欄也會告訴你 var%{HTTP_HOST}包含的確切內容。 (蛤和魚將充當引號,因此如果其中%{HTTP_HOST}包含斜杠或空格其他棘手字符,您會看到它。)

(為了 .htaccess 相容性,從 foobar 中刪除了 /,thnx @w3dk)

答案2

我最終做的是設定 proxypass /test site.example.com

這樣,當伺服器看到 /test 時,它將載入 site.example.com 中的內容

相關內容