我需要在 RewriteRule 中使用 HTTP_HOST 标头,但更改我不能使用 SERVER_NAME 的端口,因为它将与主机标头不同(这是我需要的)
有没有办法为 mod_rewrite 修剪 HTTP_HOST 变量的 :port ?
我需要在 RewriteRule 中使用 HTTP_HOST 标头,但更改我不能使用 SERVER_NAME 的端口,因为它将与主机标头不同(这是我需要的)
有没有办法为 mod_rewrite 修剪 HTTP_HOST 变量的 :port ?
是的,您可以修剪主机头的端口。只需匹配%{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
不行