兩個域之間的轉髮指向伺服器的同一個目錄而不改變URL
我有
domain1.com
和domain2.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.123
和domain1.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]