在 Apache 中重写后传递 REQUEST_URI php-fm

在 Apache 中重写后传递 REQUEST_URI php-fm

我们正在尝试将安装迁移到 Apache 事件引擎,用 PHP-FPM 替换 mod_php。我们有一个由 apache 从旧 URL 执行的复杂重写列表,并生成 SEO 友好的 URL,如下所示:

#Ej: /holidays/costa-del-sol/nombre-99.html
RewriteRule ^/holidays/([^/])/([^/])-([\d]+)\.html$ /scripts/pack.php?package=$3&lang=eng [QSA,P,E=notAllowedParams:package-region-regionname-lang,E=ORIG_URI:/$1]

但此外,我们的 PHP 还确认客户端使用的 URL 有效,否则执行重定向。为此,我们评估 $SERVER REQUEST_URI 变量,但此变量现在错误地设置为第二个“脚本”URL,而不是源。

这是...Apache 收到 URL X 的请求,在内部重写(无 301)到 Y 地址。使用 mod_php 时,这对 PHP 来说是透明的,但现在当我们“代理”到 PHP-FM 时,会调用 Y 脚本(因此会执行重写),但我们找不到强制 PHP 维护和接收 REQUEST_URI 值的方法。

我们的 PHP-FPM Apache 配置

<FilesMatch \.php$>
    # 2.4.10+ can proxy to unix socket
    # SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
    # Else we can just use a tcp socket:
    SetHandler "proxy:fcgi://127.0.0.1:9001"
</FilesMatch>
ProxyPassMatch ^/(.\.php(/.)?)$ fcgi://127.0.0.1:9001/${GIS_JOSE}/www/$1 enablereuse=on

我们尝试了各种方法来保留该值,但没有成功:

ProxyPreserveHost On
ProxyRequests Off
ProxyFCGISetEnvIf "true" REQUEST_URI "%{reqenv:REQUEST_URI}"
RewriteOptions InheritBefore

我们怀疑这是否不可能,或者我们遗漏了有关执行顺序的某些内容。

相关内容