首页 > 解决方案 > 找不到我复制到不同服务器的工作 Symfony 项目的 Symfony 4 路由

问题描述

我正在尝试将工作中的 Symfony 项目从一个环境复制到另一个环境。(创建者目前无法帮助我)看起来我几乎成功了,直到我不得不检查 Symfony 路由页面。它给了我一个 404 NOT FOUND 页面。

我所做的是将整个项目从一个环境复制到另一个环境(我自己设置)。以下是我认为与此问题相关的文件。如果我需要显示不同的文件以找到解决方案,请告诉我。

该页面host/(var/www/html/)project/public/显示the Welcome to Symfony!-page。

其他html页面正在运行。

导航到使用 Symfony 设置的页面会host/project/public/MyPage返回 HTTP 404(未找到)错误页面。

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/

        <Directory "/var/www/html/project/public">
                AllowOverride All
                Order allow,deny
                Allow from All
                Require all granted
        </Directory>
...

MyController.php

<?php

namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;

class MyController extends AbstractController
{
    /**
     * @Route("/MyPage")
     */
    public function SubmitBootstrapAction(LoggerInterface $logger)
    {
...

/config/routes.yaml

#index:
#    path: /
#    controller: App\Controller\DefaultController::index

标签: phpsymfonyroutesapache2

解决方案


我猜重写引擎已经关闭

选项1:旧样式,激活重写引擎添加重写规则

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]

选项 2:推荐文档中所述,您不应再使用重写引擎。现在建议使用 FallbackResource。

<VirtualHost *:80>
    ServerName domain.tld
    ServerAlias www.domain.tld

    DocumentRoot /var/www/project/public
    DirectoryIndex /index.php

    <Directory /var/www/project/public>
        AllowOverride None
        Order Allow,Deny
        Allow from All

        FallbackResource /index.php   ###<==== Here
    </Directory>

推荐阅读