php - 将 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 错误。
谁能帮我解决我的问题?也许您需要另一个文件来查看问题所在?
解决方案
尝试将此 .htaccess 内容放在 public_html 目录中
RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
即使它有效,也不应该这样做,所以将其视为临时解决方案
推荐阅读
- vb.net - 为什么CType会抛出无效日期异常
- angularjs - 从 angularJS 中的 JSON 获取数据
- ansible - 在多委托主机上进行异步多任务
- c# - 如何使用 imapclient 在 C# 中从 gmail 中读取电子邮件时跳过 & 字符
- python - 如何从 CBV 获取“get_context_data”中的“id”?
- java - 是否可以调用没有名称的函数?
- c# - c#查询不更新数据库
- python - 我的装饰器适用于常规功能,但不适用于实例
- node.js - 哪些内置 MongoDB 角色允许用户为所有数据库创建新数据库和用户?
- android - android中的按钮视图