大量虚拟主机:将任何portnumber映射到自己的域名

我需要定义规则(使用mod_rewrite我认为)映射任何端口portnumber.domain.com 。 如何在Apache2中做到这一点? 现在我有一个像下面的每个端口号的configuration。

 # 9003.domain.com <VirtualHost *:80> ServerName 9003.domain.com ProxyPreserveHost On ProxyPass / http://127.0.0.1:9003/ ProxyPassReverse / http://127.0.0.1:9003/ </VirtualHost> # 9004.domain.com <VirtualHost *:80> ServerName 9004.domain.com ProxyPreserveHost On ProxyPass / http://127.0.0.1:9004/ ProxyPassReverse / http://127.0.0.1:9004/ </VirtualHost> # and so on.... 

你应该可以用ProxyPassMatch做些事情,也许类似

ProxyPassMatch ^([0-9{2,5}]) http://127.0.0.1:$1

我对@Krist回答做了一些更正,现在就开始工作。 403 error来自RewriteEngine On缺席。

 <VirtualHost *:80> RewriteEngine On ServerAlias *.domain.com RewriteCond %{HTTP_HOST} (\d+).domain.com RewriteRule ^/(.*)$ http://localhost:%1/$1 [P] </VirtualHost> 

重写规则确实会这样做。

 <VirtualHost *:80> Servername www.domain.com ServerAlias *.domain.com RewriteCond %{HTTP_HOST} (\d+).domain.com RewriteRule (.*) http://localhost:%1/$1 [P] </VirtualHost>