我想要做的是設定一個重寫規則,以便在輸入 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 中的內容