%0与Apache的ProxyPassMatch使用时不受服务器名称替换 [英] %0 is not replaced by server name when used with Apache's ProxyPassMatch
问题描述
问题:
%0不与ProxyPassMatch当用于服务器的名称(即,test.local)取代。
%0 is not replaced by server name (i.e. test.local) when used with ProxyPassMatch.
<VirtualHost *:80>
UseCanonicalName Off
# %0 is replaced by server name (works)
VirtualDocumentRoot /Users/mattes/sites/%0
# %0 is replaced by an empty string (problem!)
ProxyPassMatch ^(/.*\.php)$ fcgi://127.0.0.1:9000/Users/mattes/sites/%0/$1
</VirtualHost>
解决方法:
我发现了一个有趣的博客张贴在这里:的http:// holtstrom.com/michael/blog/post/225/Apache-2.2-Proxy.html 。基本上,迈克尔使用RewriteEngine叙述保存以供日后使用变量。这样的事会工作,例如:
I found an interesting blog post here: http://holtstrom.com/michael/blog/post/225/Apache-2.2-Proxy.html. Basically, Michael uses RewriteEngine to save variables for later usage. Something like this will work, for example:
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /Users/mattes/sites/%0
RewriteEngine On
RewriteRule .* - [E=SERVER_NAME:%{SERVER_NAME}]
ProxyPassInterpolateEnv On
ProxyPassMatch ^(/.*\.php)$ fcgi://127.0.0.1:9000/Users/mattes/sites/ \
${SERVER_NAME}$1 interpolate
</VirtualHost>
虽然它的作品,我认为这是一个不那么好的解决方法。我也越来越像错误AH00111:配置变量$ {SERVER_NAME}没有定义。
While it works, i consider this to be a not-so-nice work-around. I am also getting errors like "AH00111: Config variable ${SERVER_NAME} is not defined".
有没有人一个想法如何解决这个问题?
推荐答案
我使用这个配置与Apache 2.4:
I'm using this configuration with Apache 2.4:
<VirtualHost *:8080>
UseCanonicalName Off
VirtualDocumentRoot "/usr/local/apache/vhosts/%0"
RewriteEngine On
RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:19054/usr/local/apache/vhosts/%{SERVER_NAME}/$1 [P]
</VirtualHost>
虚拟主机
目录包含与Apache将动态匹配每个请求的域名目录。然后,所有PHP文件进行匹配和它们的请求转发到PHP FPM过程在听 127.0.0.1:19054
。
vhosts
directory contains directories with domain names that Apache will dynamically match to each request. All PHP files are then matched and their requests are forwarded to PHP FPM process listening at 127.0.0.1:19054
.
此配置可与内部虚拟主机目录的设备,还重写规则。
This configuration works with further rewrite rules defined inside virtual hosts directories.
这篇关于%0与Apache的ProxyPassMatch使用时不受服务器名称替换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!