8

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

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

4

1 回答 1

11

是的,您可以修剪主机头的端口。只需匹配%{HTTP_HOST}并使用%1反向引用。例如:

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

请记住,%1反向引用只能在 a 的第一个参数中使用RewriteCond,而不能在匹配中使用:

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

没问题

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

不行

于 2012-07-19T04:39:12.157 回答