为了使我的生活更容易适应新的虚拟主机的出现,我设置了我的 httpd.conf 来使用这个:
<IfModule mod_vhost_alias.c>
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT}s ^(443(s)|[0-9]+s)$
RewriteRule ^(.*)$ - [env=askapache:%2]
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]
ServerAlias *
UseCanonicalName Off
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /var/log/httpd/access_log vcommon
VirtualDocumentRoot /web-data/vhosts/%0/httpdocs
VirtualScriptAlias /web-data/vhosts/%0/httpdocs
</VirtualHost>
</IfModule>
问题是其中一个主机需要使用 ProxyPass 语句。我本来打算将其放在该站点根目录(而不是 httpdocs 文件夹外的 Doc Root)中 conf 文件夹中的单独 conf 文件中。但是我不知道如何做到这一点并将其包含在动态虚拟主机中。我该怎么做才能仅为这台主机设置 ProxyPass,而不会弄乱我已有的动态虚拟主机设置?
编辑:
我尝试在 .htaccess 文件中执行以下操作,但无济于事。我收到 404
RewriteEngine on
RewriteRule ^blog/$ http://blog.mydomain.com [P,L]
答案1
您可能可以在 Apache conf 目录中的单独的 conf 文件中定义您的代理,然后在 htaccess 文件中使用带有 P 标志(在后台使用 mod_proxy)的重写规则。