Я пытаюсь вернуться к разработке, пытаюсь настроить 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 работает нормально. очевидно, я не хочу этого, но надеюсь, что это поможет разобраться в этом ...
Не найден Запрошенный URL / новости не найдены на этом сервере. Кроме того, произошла ошибка 404 Not Found при попытке использовать ErrorDocument для обработки запроса.
Это сообщение об ошибке apache. Итак, это не неправильная конфигурация symfony: проблема в том, что когда вы нажимаете /news, вы вообще не вызываете symfony. Что вы могли сделать, так это установить мета-пакет github.com/symfony/apache-pack. Это просто быстрый способ добавить файл .htaccess (github.com/symfony/recipes-contrib/blob/master/symfony/…) в ваш веб-каталог. composer require symfony/apache-pack
Итак, установка apache-pack не решила эту проблему, и она не добавила .htaccess нигде, что я мог видеть - однако ручное добавление .htaccess из предоставленной вами ссылки устранило проблему !! :) Хочешь официально ответить на вопрос? Большое вам спасибо = D
apache-pack решил проблему для меня, вам нужно перенаправить все маршруты на index.php, который берет его оттуда (в ядро Symfony). для этого вам необходимо создать файл .htaccess в вашей общей папке. это автоматически делается с помощью [композитору требуется symfony / apache-pack]






Сначала установите 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] -> автоматически настроит все для вас. Надеюсь, это кому-нибудь поможет
Установите .htaccess в корневой каталог с тем же кодом, что и в этой ссылке:
https://github.com/symfony/recipes-contrib/blob/master/symfony/apache-pack/1.0/public/.htaccess
Спасибо.
Когда вы нажимаете
/news, вы получаете 404 от Symfony или от apache / вашего веб-сервера? Если вы не уверены, вставьте сюда сообщение об ошибке.