首页 > 解决方案 > 将 Symfony 项目部署到产品服务器时出现问题

问题描述

我是 Symfony 的新手,我遇到了路由返回 404 错误的问题。在我的开发环境中一切正常,但我不知道如何在 prod 服务器上部署我的项目。我可能在某个地方错过了一步。

所以这是我的一个名为HomeController的控制器:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{
    #[Route('/', name: 'home')]
    public function index(): Response
    {
        return $this->render('home/index.html.twig');
    }


    #[Route('/pc', name: 'home_pc')]
    public function pc(): Response
    {
        return $this->render('home/pc.html.twig');
    }

当我执行以下命令时php bin/console debug:router --show-controllers。控制台打印以下内容,所以我猜 Symfony 知道我的不同路线。

 --------- -------- -------- ------ ------ ----------------------------------------
  Name      Method   Scheme   Host   Path   Controller
 --------- -------- -------- ------ ------ ----------------------------------------
  home      ANY      ANY      ANY    /      App\Controller\HomeController::index()
  home_pc   ANY      ANY      ANY    /pc    App\Controller\HomeController::pc()
 --------- -------- -------- ------ ------ ----------------------------------------

然后,例如,当我尝试访问时mywebsite.com/pc,它只会给我一个空白页和404 错误

谁能帮我解决我的问题?也许您需要另一个文件来查看问题所在?

标签: phpsymfony

解决方案


尝试将此 .htaccess 内容放在 public_html 目录中

RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

即使它有效,也不应该这样做,所以将其视为临时解决方案


推荐阅读