Symfony:404生产错误

Symfony:404生产错误,symfony,http-status-code-404,production-environment,Symfony,Http Status Code 404,Production Environment,下面是一个页面示例,该页面在dev env上运行良好,并在prod env上返回404错误 找不到 在此服务器上找不到请求的URL/app/reporter/。 位于symfony.dev端口80的Apache/2.4.7 Ubuntu服务器 不要让自己被/app/route搞糊涂,这是一个真实的路由,与app.php无关 运行php应用程序/控制台路由器:debug-env=prod确认路由器没有问题: [router] Current routes Name

下面是一个页面示例,该页面在dev env上运行良好,并在prod env上返回404错误

找不到

在此服务器上找不到请求的URL/app/reporter/。 位于symfony.dev端口80的Apache/2.4.7 Ubuntu服务器

不要让自己被/app/route搞糊涂,这是一个真实的路由,与app.php无关

运行php应用程序/控制台路由器:debug-env=prod确认路由器没有问题:

[router] Current routes
Name                                               Method Scheme Host   Path      
reporter                                           ANY    ANY    ANY  /app/reporter/      
当然,在发布此消息之前,我:

使用控制台cache:clear-env=prod清除缓存,以及直接删除缓存文件,但这没有改变任何内容。 在phpinfo中双重检查mod_rewrite是否打开 无论如何,我猜错误更多地来自Apache,因此我的配置如下:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName symfony.dev
    SetEnv SYMFONY__TENANT__ID "123"

    DocumentRoot /var/www/html/Symfony/web

#               <Directory />
#                       Options FollowSymLinks
#                       AllowOverride None
#               </Directory>

            <Directory /var/www/html/Symfony/web >
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error-symfony.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access-symfony.log combined

    Alias /doc/ "/usr/share/doc/"

            <Directory "/usr/share/doc/">
                    Options Indexes MultiViews FollowSymLinks
                    AllowOverride None
                    Order deny,allow
                    Deny from all
                    Allow from 127.0.0.0/255.0.0.0 ::1/128
            </Directory>

</VirtualHost>
我没有更改默认symfony/web/.htaccess中的任何内容: 为了可读性没有注释


Apache错误日志确认错误来自:

[negotiation:error] [pid 1583] [client 127.0.0.1:44590] AH00687: Negotiation: discovered file(s) matching request: /var/www/html/Symfony/web/app (None could be negotiated).
由于我对Apache的理解严重受限,我在谷歌上搜索了这个错误,发现了这个主题:

因此,我最终只是删除了vhost conf的MultiViews选项,它解决了这个问题

正如上面提到的give link一样

这将向您展示,当您不确定设置的作用时,简单地启用设置是多么糟糕

DirectoryIndex app.php

<IfModule mod_rewrite.c>
RewriteEngine On


RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]


RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]


RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]


RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
    
    RedirectMatch 302 ^/$ /app.php/
   
</IfModule>
</IfModule>
[negotiation:error] [pid 1583] [client 127.0.0.1:44590] AH00687: Negotiation: discovered file(s) matching request: /var/www/html/Symfony/web/app (None could be negotiated).