使用Apache将一个域的所有子域代理到另一个域

使用Apache将一个域的所有子域代理到另一个域,apache,reverse-proxy,subdomain,wildcard-subdomain,Apache,Reverse Proxy,Subdomain,Wildcard Subdomain,我正在尝试使用Apache构建一个反向代理。 我的目标是将.domain.com/file.html格式的所有请求代理到www.domain.com//file.html 我需要捕获原始URL的,并使用它来构建目标URL 我假设我需要一个Apache指令,它可以匹配整个URL上的正则表达式,而不是%{HTTP_HOST}之后的URL部分,因为我的目标URL包含原始URL的子域。由于这个原因,我不能使用ProxyPassMatch指令,因为它只匹配%{HTTP\u HOST}之后的URL部分 另一

我正在尝试使用Apache构建一个反向代理。 我的目标是将
.domain.com/file.html
格式的所有请求代理到
www.domain.com//file.html

我需要捕获原始URL的
,并使用它来构建目标URL

我假设我需要一个Apache指令,它可以匹配整个URL上的正则表达式,而不是
%{HTTP_HOST}
之后的URL部分,因为我的目标URL包含原始URL的子域。由于这个原因,我不能使用
ProxyPassMatch
指令,因为它只匹配
%{HTTP\u HOST}
之后的URL部分

另一种选择是使用尽可能多的
VirtualHost
节作为我的子域。但是这个解决方案当然没有意义,因为我的子域会不断增加


关于如何解决这个问题有什么建议吗?

好的,我用重写规则解决了这个问题

# Requires Apache module ``proxy_http``, ``rewrite``
<VirtualHost *:80>
    ServerName primary.domain.com
    ServerAlias *.domain.com

    ProxyRequests Off
    <Proxy *>
         Order deny,allow
         Allow from all
    </Proxy>

    RewriteEngine On

    RewriteCond %{HTTP_HOST}/%{REQUEST_URI} ^(.*)\.domain\.com/(.*)$
    RewriteRule (.*)    http://www.domain.com/%1%2 [P]

 </VirtualHost>
#需要Apache模块``代理` http```重写``
ServerName primary.domain.com
ServerAlias*.domain.com
代理请求关闭
命令拒绝,允许
通融
重新启动发动机
RewriteCond%{HTTP\u HOST}/%{REQUEST\u URI}^(.*)\.domain\.com/(.*)$
重写规则(.*)http://www.domain.com/%1%2 [P]
基本上是这样的:

  • RewriteCond
    匹配URL与.domain.com匹配的所有传入请求/
  • RewriteRule
    将请求代理到URL
    http://www.domain.com/%1/%2
    ,其中
    %1
    %2
    分别是原始请求的子域和请求uri

你明白了。你得到了RewriteCond,你得到了%(而不是$),这有点模糊,但据我所知,对于这个特殊的问题是必要的。(你是不是漏了一条斜线?@ChuckKollars:你是说在
重写规则中
%1
%2
之间有一条斜线?请求Uri(
%2
)已经包含斜杠,因此不需要斜杠。不过,在我的解释中,我加入了它,使之更加明确。