У меня проблема с одним веб-сайтом после его перемещения на другой сервер.Старый не использовал php-fpm, новый - нет, и до сих пор у меня не было проблем, связанных с этим при переносе других сайтов.
С этим связано то, что он использует странный способдобиться символических ссылок.Посмотрите, что происходит в .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
index.php взрывает PATH_INFO для получения необходимых параметров:
$url_elements = explode('/', $_SERVER['PATH_INFO']);
Домашняя страница работает нормально.Что не работает, так это все подстраницы.Я получаю Файл не найден. спереди и AH01071: Получена ошибка 'Основной скрипт неизвестен \ n' из php-fpm в журналах.
Моя идея таковаэто происходит потому, что php-fpm получает имя файла с косой чертой и обрабатывает его как путь.
Это конфигурация, которую Apache использует для обработки файлов PHP через php-fpm:
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
Я не могу позволить себе переписать код этого веб-сайта, чтобы сделать более удобные URL-адреса, потому что этот веб-сайт - просто небольшая страница, используемая для целей SEO, и компания не позволит сейчас тратить на это время.
Я был бы более чем рад, если бы кто-нибудь предоставил мне простое исправление этих ошибок.
Заранее спасибо!