2013-04-04 89 views
2

我試圖使用mod_rewrite來基本上將子域上的端口轉發到另一個IP上的另一個端口。使用.htaccess更改端口和主機

像這樣:

sub.website.com:2000 --> 123.45.67.891:3000 

這怎麼可能使用.htaccess文件,mod_rewrite來完成?

我曾嘗試以下,但無濟於事:

RewriteCond %{HTTP_HOST} ^sub.website.com$ [NC] 
RewriteCond %{SERVER_PORT} ^2000$ 
RewriteRule ^(.*)$ https://123.45.67.891:3000/$1 [L,R=302] 
+0

規則看起來很簡單。 「無濟於事」是什麼意思?你有什麼錯誤嗎? 「sub.website.com」的頁面是否顯示?還有別的嗎? – 2013-04-04 20:58:39

+0

它只是不正確地轉發端口。 – Joshua 2013-04-04 21:15:23

回答

2

與你的規則玩,我發現HTTP_HOST包含端口號。因此,規則看起來應該像

RewriteCond %{HTTP_HOST} ^sub.website.com:2000$ [NC] 
RewriteCond %{SERVER_PORT} ^2000$ 
RewriteRule ^(.*)$ https://123.45.67.891:3000/$1 [L,R=302] 

如果你想獨自測試對服務器的名稱,你可以使用%{SERVER_NAME}作爲@faa建議在評論

RewriteCond %{SERVER_NAME} ^sub.website.com$ [NC] 
+0

感謝您的答覆和單獨測試服務器名稱的工作正常,但試圖指定一個端口不正確。我在這裏用端口2000嘗試它,但Safari只是告訴我,頁面所在的服務器沒有響應。這是我的'.htaccess'文件:http://pastebin.com/aqjwgZjb – Joshua 2013-04-04 22:31:08

+1

@Joshua然後虛擬主機沒有安裝在端口2000監聽。你必須說'Listen 2000'和' ...或' ...'在虛擬主機配置中。 – 2013-04-04 22:37:56