Apache和php fpm没有';不适用于带有正斜杠的脚本名称

Apache和php fpm没有';不适用于带有正斜杠的脚本名称,php,apache,fpm,Php,Apache,Fpm,我在将一个网站移动到另一个服务器后遇到问题。旧的一个没有使用php fpm,新的一个使用,到目前为止,我在迁移其他网站时没有遇到任何与此相关的问题 这一个的问题是,它使用奇怪的方式来实现符号链接。查看.htaccess中发生的情况: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] index.php分解路径信息以获取所需参数:

我在将一个网站移动到另一个服务器后遇到问题。旧的一个没有使用php fpm,新的一个使用,到目前为止,我在迁移其他网站时没有遇到任何与此相关的问题

这一个的问题是,它使用奇怪的方式来实现符号链接。查看.htaccess中发生的情况:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
index.php分解路径信息以获取所需参数:

$url_elements = explode('/', $_SERVER['PATH_INFO']);
主页工作正常。不起作用的是所有子页面。我找不到文件。在前面,和AH01071:从日志中的php fpm获取错误“主脚本未知\n”

我的想法是,之所以会发生这种情况,是因为php fpm获取带有正斜杠的文件名,并将其视为路径

这是Apache用于通过PHP fpm处理PHP文件的配置:

# 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>
#如果mod_php不可用,则重定向到本地php fpm
#启用http授权头
SetEnvIfNoCase^ Authorization$“(.+)”HTTP_Authorization=$1
SetHandler“proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
#默认情况下拒绝访问原始php源代码
#要重新启用,建议启用对文件的访问
#仅在特定虚拟主机或目录中
要求全部拒绝
#拒绝访问没有文件名的文件(例如.php)
要求全部拒绝
我负担不起重写这个网站的代码以更好的方式创建友好的URL,因为这个网站只是一个用于SEO目的的小页面,公司现在不允许在这方面浪费时间

如果有人能为这些错误提供一个简单的解决方案,我会非常高兴


提前谢谢你

请尝试启用
FollowSymLinks
AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

选项索引跟随符号链接
允许超越所有
要求所有授权

完成后,使用命令
sudo systemctl stop apache2
sudo systemctl start apache2

重新启动apache2服务。您的旧
.conf
在那里了吗?