Linux

兩個域之間的轉髮指向伺服器的同一個目錄而不改變URL

  • July 17, 2020

我有domain1.comdomain2.com

domain1.com是指向伺服器 IP 的主域,123.123.123.123正好指向目錄public_html

domain2.com是我想在domain1.com不更改使用者瀏覽器中的 URL 的情況下轉發到的域。(注意:此域將是使用者配置文件的域)。

所以,domain1.com/users/John我不會輸入 ,而是輸入domain2.com

domain2.com指向相同的 IP 地址123.123.123.123domain1.com( public_html) 的相同目錄。

我指向domain2.com同一個伺服器和目錄以從 .htaccess 訪問它domain1.com

.htaccess因此,我在of中嘗試了以下操作public_html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

但這是返回 500 錯誤 http 程式碼!

注意:我有一個專用伺服器。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

目前尚不清楚為什麼這會導致 500 錯誤,除非未正確安裝或配置 mod_proxy 或 mod_rewrite?或者您可能與其他指令有衝突?您應該檢查錯誤日誌以了解錯誤的詳細資訊。

但是,如果這兩個域指向同一個伺服器/目錄,並且您希望將domain2.com(原始 URL)保留在瀏覽器的地址欄中,那麼您不必代理請求(就像您在此處嘗試做的那樣)。您似乎只需要一個更簡單的內部重寫(在同一域上)。例如:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule !^users /users/John%{REQUEST_URI} [L]

正則表達式!^users是為了避免重寫循環(這也會在瀏覽器中顯示為 500 錯誤)。

所以,domain1.com/users/John我不會輸入 ,而是輸入domain2.com

但請注意,上述內容會將請求發送到/users/John/(帶有斜杠),而不是/users/John您在此處所說的(沒有斜杠) - 這是一個問題嗎?

而且您想根據您發布的程式碼範例從 to/<something>重寫/users/John/<something>?儘管您的問題文本中沒有提到這一點?如果您只想重寫域本身的請求,即。domain2.com/而不是domain2.com/<something>那麼以上可以進一步簡化。例如:

RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule ^$ /users/John [L]

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