小编Dis*_*ler的帖子

在使用 mod_proxy_fcgi 和 PATH_INFO 时重写 URL 最终会出现错误 404

我在 Apache 2.4.25 上有一个虚拟主机,PHP-FPM 7.1.4 通过 mod_proxy_fcgi 连接,如下所示:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /srv/www/example.com

    <Directory /srv/www/example.com>
        AllowOverride All
        Require all granted
    </Directory>

    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
        SetHandler "proxy:unix:/run/php/example.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

大多数应用程序在此设置下都能完美运行,但有一个应用程序使用 PATH_INFO 来提取请求。该应用程序在其 .htaccess 中有类似的内容:

RewriteEngine On

RewriteCond $1 ^index\.php
RewriteRule ^(.*)$ - [PT,L]

RewriteRule ^(.*)$ index.php/$1 [PT,L]
Run Code Online (Sandbox Code Playgroud)

简单地说,所有不是的东西都index.php应该作为路径传递给它。访问 URL http://example.com/index.php/test可以正常工作并按[PATH_INFO] => /test预期显示,但访问http://example.com/test 会

AH01071: Got error 'Primary script unknown\n'
Run Code Online (Sandbox Code Playgroud)

LogLevel trace6mod_rewrite 和 mod_proxy_fcgi 的设置表明重定向已正确完成,并且正确的路径也传递给 PHP-FPM。

/index.php/test 的跟踪:

[Sat Apr …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite php-fpm apache-2.4 mod-proxy-fcgi

3
推荐指数
1
解决办法
3085
查看次数

标签 统计

apache-2.4 ×1

mod-proxy-fcgi ×1

mod-rewrite ×1

php-fpm ×1