Windows 上的 Apache 2.4 + mod_rewrite + FastCGI (php-cgi.exe)

Windows 上的 Apache 2.4 + mod_rewrite + FastCGI (php-cgi.exe)

我正在尝试将我的 Mac 配置移植到 Windows 上以供一些客户使用。

由于 Windows 不是 Mac OS,因此我必须使用 php-cgi.exe 而不是 PHP-FPM。我已经单独测试了每个组件,一切似乎都正常工作,因此我相信这是一个仅配置的问题。

在我的 Mac 上,有这个RewriteRule

RewriteCond %{SERVER_NAME}     ^([^.]+)\.([^.]+)\.dev$
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/%2/%1/$1" [P]

我已经添加了,RewriteCond以便您可以看到%1它们%2来自哪里。

%{DOCUMENT_ROOT}在我的 Mac 上,它以 开头,因此运行正常/,但在 Windows 上%{DOCUMENT_ROOT}则以 开头C:

测试此配置时,会出现以下错误:

代理错误

代理服务器从上游服务器收到无效响应。代理服务器无法处理请求 GET /。

原因:DNS查找失败:127.0.0.1:9000c:

看起来(通过查看 error.log)它127.0.0.1:9000:C:被视为 IPv6 地址的一部分,并且按照[127.0.0.1:9000:C:]日志中的方式进行转换。

如果我尝试使用以下方法隔离这两个部分/

RewriteCond %{SERVER_NAME}     ^([^.]+)\.([^.]+)\.dev$
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000/%{DOCUMENT_ROOT}/%2/%1/$1" [P]
                                                     ^

我收到此错误:

未指定输入文件。

实际上,到目前为止我测试的所有东西都出现了这个错误。

有解决办法吗?

相关内容