RewriteRule使用HTTP_HOST和不同的端口

arc*_*rty 8 mod-rewrite

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

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

Jon*_*Lin 11

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

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

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

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

没关系

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
RewriteCond %{REQUEST_URI} ^%1
Run Code Online (Sandbox Code Playgroud)

不行