Мы пытаемся перенести установку на механизм обработки событий Apache, заменив mod_php на PHP-FPM. У нас есть большой и сложный список перезаписей, выполняемых 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 (таким образом, выполняется перезапись), но мы не можем найти способ заставить значение REQUEST_URI сохраняться и приниматься PHP.
Наша конфигурация Apache для PHP-FPM
<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
Мы сомневаемся, что это невозможно или мы чего-то упускаем из-за порядка выполнения.