2012-07-19 76 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