簡體   English   中英

Apache mod_proxy_fcgi、php-fpm 和 url 重寫問題

[英]Apache mod_proxy_fcgi, php-fpm and url rewriting issue

我需要將應用程序從 Apache PHP 模塊遷移到 PHP-FPM,為此我看到 mod_proxy_fcgi 是首選方式。

該應用程序正在運行舊的 Zend 框架 1。

來自 VHost 的一些相關部分:

RewriteEngine on
DocumentRoot /home/app/www
<Directory "/home/app/www">
                Require all granted
                AllowOverride All
                Options +FollowSymLinks
</Directory>
<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://php7/"
</FilesMatch>
<Proxy fcgi://php7>
    ProxySet connectiontimeout=5 timeout=240
</Proxy>

我的端點是http://server/CLIENT/index.php

在 /home/app/www/CLIENT/.htaccess 我有( 由 Zend Framework 1.0 指定

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php/$0 [L]

當我點擊一個標准的 php 頁面時,一切順利。 但是每當我想使用路由器時,我都會收到 PHP-FPM 提供的 404(例如http://server/CLIENT/page )。 我仍然可以通過直接瀏覽http://server/CLIENT/index.php/page來讓我的路由器工作。

URL 重寫運行,因為當我啟用調試重寫日志時,我可以看到它通過了所有規則。

有趣的是,我還使用舊的 mod_fastcgi 測試了 PHP-FPM。 通過這種方法,在完全相同的配置下一切順利。 更重要的是,重寫日志的調試是完全相同的。

我為此苦苦掙扎了好幾天。 有沒有人有解決這個問題的絕妙主意?

雖然這可能不是最好的答案,但我確實遇到了完全相同的問題。 重寫您的 .htaccess 文件以獲得 ? 在 index.php 的末尾確實為我解決了它。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?/$0 [L]

請注意在 RewriteRule 上添加了一個問號。

如果您以不同的方式解決它,請更新此帖子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM