2012-07-19 67 views
6

我需要使用HTTP_HOST一個報頭的重寫規則,但更改端口 我不能使用SERVER_NAME因爲這將是從主機頭不同(這正是我需要的)重寫規則使用HTTP_HOST和不同的端口

是有一種方法可以修改mod_rewrite的HTTP_HOST變量的端口:

+0

你的意思是你在不同的端口上運行Apache? – Devraj 2012-07-19 04:28:41

+0

%{SERVER_PORT}包含服務器的端口。你可以編輯你的問題更具描述性? – 2012-07-19 04:39:03

+0

它需要使用http_host重定向到適當的外部服務器。這個虛擬網站不在端口80 – arcyqwerty 2012-07-19 05:07:01

回答

9

是的,你可以修剪掉主機頭的端口。只需匹配%{HTTP_HOST}並使用%1反向引用即可。例如:

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteRule^http://%1:12345/ [R,L] 

只要記住的是,%1反向引用只能在RewriteCond的第一個參數一起使用,而不是在比賽中:

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteCond %1 ^the.hostname.com$ [NC] 

是確定

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ 
RewriteCond %{REQUEST_URI} ^%1 

不好

+0

我認爲這解決了我的問題。謝謝! :) – arcyqwerty 2012-07-19 15:29:17