%0与Apache的ProxyPassMatch使用时不受服务器名称替换 [英] %0 is not replaced by server name when used with Apache's ProxyPassMatch

查看:1230
本文介绍了%0与Apache的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆