如何重定向到 Public 中的静态页面死于 Symfony 5 项目

How redirect to a static page in Public dir in a Symfony5 project

我有一个简单的静态网站。 在此基础上,我构建了一个 Symfony 项目,其中包含一个带有 easyadmin-bundle 的管理面板和一个 API,用于在静态页面上使用 ajax 检索数据。

项目结构是这样的:

一切正常,但我只能在调用时访问该页面: myfakedomain.com/index.html
页面 myfakedomain.com 返回 404 错误 我想要的是从 myfakedomain.com/myfakedomain.com/index.html[=57= 的自动重定向]

我认为这可以在 .htaccess 文件中完成。这是 .htaccess 文件的当前内容:

<IfModule mod_rewrite.c>
    RewriteEngine On

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

    # Sets the HTTP_AUTHORIZATION header removed by Apache
    RewriteCond %{HTTP:Authorization} .+
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

这个项目部署在 heroku 所以我创建了一个 Procfile

web: vendor/bin/heroku-php-apache2 public/

可能是从那里来的?

它来自您的 .htacess,它将所有请求重定向到 index.php。

选项 1 - 使用 Apache(我不喜欢这种方法,因为有副作用)

  • 从重定向中排除现有文件。
  • 将 index.html 声明为默认文件而不是 index.php(调用 .
  • 小贴士:apache-pack可以帮到你。它包含最新的默认配置

选项 2 - 使用 Symfony(推荐方式):

  • 将 index.html 移动到 template/index。html
  • 创建一个返回响应呈现模板文件的控制器
# src/Controller/HomeController.php
class HomeController extends AbstractController
{
    #[Route(name:'home', '/')]
    public function index (): Response 
    {
        return $this->render('index.html');
    }
}