繁体   English   中英

我的 Symfony 路由抛出 404?

[英]My Symfony routes are throwing a 404?

我正在尝试重新开始开发,尝试在与 GoDaddy 共享的托管服务器上设置 Symfony。

我正在阅读 Symfony 4 的教程(此处: http ://symfony.com/doc/current/page_creation.html),但URL.co.uk/lucky/number抛出 404。

我将完全相同的 URL 路由设置为 / (而不是幸运/数字),它工作正常。

routes.yaml和注释都会出现此问题。

<?php

namespace App\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class ArticleController

{
    /**
     * @Route("/")
     */
    public function homepage()
    {
        return new Response('OMG! My new first page already! ');
    }

    /**
     * @Route("/news")
     */
    public function news()
    {
        return new Response('This must be news?');
    }

}

例如,上面的内容适用于 /,但 /news 我有一个 404 错误。

这可能是.htaccess的问题吗? 我的根目录里没有。

事实证明,使用上面的代码, URL.co.uk/index.php/news工作得很好。 显然我不想要这个,但我希望它有助于深入了解它......

symfony 4 在公用文件夹中不再有 .htaccess 文件。 所以没有重写规则。 您必须按照文档中的说明配置您的虚拟主机: https ://symfony.com/doc/master/setup/web_server_configuration.html

如果您无权访问 vhost 文件,您仍然可以在 .htaccess 文件中对其进行配置

有我的 vhost 文件的摘录:

DocumentRoot /var/www/html/public/

    <Directory /var/www/html/public/>
        Options FollowSymlinks
        AllowOverride None
        Order Allow,Deny
        Allow from All

        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
            RewriteCond %{HTTP:Authorization} ^(.*)
            RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
        </IfModule>

    </Directory>

使用与此链接中相同的代码将 .htaccess 安装到根目录中:

https://github.com/symfony/recipes-contrib/blob/master/symfony/apache-pack/1.0/public/.htaccess

谢谢你。

你(和我一样)缺少 .htaccess 的 symfony

用这一个衬垫解决:

composer require symfony/apache-pack

确保 .htaccess 文件将由 apache2 处理:

<Directory /var/www/project/public>
    AllowOverrides All
</Directory>

需要启用 mod_rewrite:

a2enmod rewrite
service apache2 restart

首先安装composer require annotations

然后你正在使用其他类Route

改变

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

至:

use Symfony\Component\Routing\Annotation\Route;

最后检查您的路线:

php bin/console debug:router

尝试把 URL.co.uk/index.php/lucky/number

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM