RewriteRule使用HTTP_HOST和不同的端口

时间:2012-07-19 04:26:12

标签: mod-rewrite

我需要在RewriteRule中使用HTTP_HOST标头,但更改端口 我不能使用SERVER_NAME,因为它与主机标题不同(这是我需要的)

有没有办法修改mod_rewrite的HTTP_HOST变量的:port?

1 个答案:

答案 0 :(得分:10)

是的,您可以修剪主机标头的端口。只需与%{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

不行