使用apache和php fpm根据重写条件设置主机头

使用apache和php fpm根据重写条件设置主机头,apache,.htaccess,mod-rewrite,php,mod-headers,Apache,.htaccess,Mod Rewrite,Php,Mod Headers,情境:我正在运行一个带有Apache2.2和PHP-FPM mod_fastcgi、PHP5.4.37的服务器。我需要在内部重写一个完整的网址喜欢。两个服务器别名都在同一vhost上运行,因此不需要mod_代理?。 对于客户端,URL dev.example.com/at/en应该在浏览器中仍然可见,而dev2-at.example.com/en在服务器端内部处理 问题:在互联网上进行了一些研究之后,我提出了以下配置来修改主机头: RewriteEngine On RewriteRule ^/(

情境:我正在运行一个带有Apache2.2和PHP-FPM mod_fastcgi、PHP5.4.37的服务器。我需要在内部重写一个完整的网址喜欢。两个服务器别名都在同一vhost上运行,因此不需要mod_代理?。 对于客户端,URL dev.example.com/at/en应该在浏览器中仍然可见,而dev2-at.example.com/en在服务器端内部处理

问题:在互联网上进行了一些研究之后,我提出了以下配置来修改主机头:

RewriteEngine On
RewriteRule ^/([^/]+)/([^/]+) - [E=FIRST:$1,E=SECOND:$2]
Header set Host dev2-%{FIRST}e.example.com env=FIRST
mod_fastcgi.conf看起来像:

<IfModule mod_fastcgi.c>
    AddHandler php-script .php
    Action php-script /php.fcgi virtual
    # TCP/IP
    FastCGIExternalServer /var/run/php-fpm/apache-php.fcgi -host 127.0.0.1:9000
    Alias /php.fcgi /var/run/php-fpm/apache-php.fcgi

    # FPM status page.
    <Location /php-fpm-status>
      SetHandler php-script
    </Location>

</IfModule>

这是主机中主机头的结果:dev2-php.fcgi.example.com。我是否必须以某种方式绕过php fpm的标题?或者有没有一种更平滑的方法来解决这个问题?

我会使用php来完成这个任务。我认为这样比较安全。如果你想使用phpHi,可以发布答案,谢谢。我还考虑了应用程序方面的解决方案。为什么会更安全?我希望看到您的PHP版本:我发现它更安全,因为您可以记录重定向,并在某些东西无法正常工作时快速采取行动