Мои маршруты Symfony выбрасывают 404?

Я пытаюсь вернуться к разработке, пытаюсь настроить Symfony на сервере общего хостинга с GoDaddy.

Я просматриваю руководство по Symfony 4 (здесь: http://symfony.com/doc/current/page_creation.html), но URL.co.uk/lucky/number выдает ошибку 404.

Я установил тот же самый URL-адрес просто / (вместо lucky / number), и он отлично работает.

Эта проблема возникает как с 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 работает нормально. очевидно, я не хочу этого, но надеюсь, что это поможет разобраться в этом ...

Когда вы нажимаете /news, вы получаете 404 от Symfony или от apache / вашего веб-сервера? Если вы не уверены, вставьте сюда сообщение об ошибке.

Federkun 11.03.2018 21:52

Не найден Запрошенный URL / новости не найдены на этом сервере. Кроме того, произошла ошибка 404 Not Found при попытке использовать ErrorDocument для обработки запроса.

Marshiewooooooo 11.03.2018 21:58

Это сообщение об ошибке apache. Итак, это не неправильная конфигурация symfony: проблема в том, что когда вы нажимаете /news, вы вообще не вызываете symfony. Что вы могли сделать, так это установить мета-пакет github.com/symfony/apache-pack. Это просто быстрый способ добавить файл .htaccess (github.com/symfony/recipes-contrib/blob/master/symfony/…) в ваш веб-каталог. composer require symfony/apache-pack

Federkun 11.03.2018 22:03

Итак, установка apache-pack не решила эту проблему, и она не добавила .htaccess нигде, что я мог видеть - однако ручное добавление .htaccess из предоставленной вами ссылки устранило проблему !! :) Хочешь официально ответить на вопрос? Большое вам спасибо = D

Marshiewooooooo 11.03.2018 22:17

apache-pack решил проблему для меня, вам нужно перенаправить все маршруты на index.php, который берет его оттуда (в ядро ​​Symfony). для этого вам необходимо создать файл .htaccess в вашей общей папке. это автоматически делается с помощью [композитору требуется symfony / apache-pack]

clockw0rk 03.08.2020 16:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
5
9 238
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сначала установите composer require annotations:

Тогда вы используете другой класс Route:

Изменять

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

к:

use Symfony\Component\Routing\Annotation\Route;

Наконец проверьте свои маршруты:

php bin/console debug:router

Ответ принят как подходящий

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>

сбросив эту команду сюда, так как многие ppl. поиск только принятых ответов: [композитору требуется symfony / apache-pack] -> автоматически настроит все для вас. Надеюсь, это кому-нибудь поможет

clockw0rk 03.08.2020 16:28

Установите .htaccess в корневой каталог с тем же кодом, что и в этой ссылке:

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

Спасибо.

Другие вопросы по теме