Настройте symfony, чтобы не рассматривать подпапку как часть маршрута

У меня есть сервер Apache, и мои проекты находятся внутри /var/www/html/

Внутри я создал новый проект, используя композитор, например composer create-project symfony/website-skeleton myproject.

Затем внутри моего проекта я выполнил команду composer require symfony/apache-pack, которая добавила файл .htaccess в папку public, содержащую .htaccess по умолчанию для symfony.

Когда я получил доступ к своему серверу, как http://192.168.0.2/myproject, я получил список папок, которые apache обслуживает, если он не находит файл index.php, потому что он обращается к папке symfony по умолчанию в /var/www/html/myproject, а не к общей папке.

Итак, внутри папки /var/www/html/myproject, которая является проектом Symfony, я добавил следующий файл .htaccess.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /myproject/

    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

Нет, когда я посещаю http://192.168.0.2/myproject, я получаю сообщение об ошибке No route found for "GET /myproject/", что означает, что symfony теперь рассматривает /myproject как часть маршрута.

Есть ли решение для этого. Я предложил решение, которое я получил от symfony slack, заключалось в том, чтобы проект находился в другой папке и символически ссылался только на общую папку.

Что-то типа:

lrwxrwxrwx 1 root root 59 gmponos 9 19:26 myproject -> /home/gmponos/Projects/myproject/public/

Это решение, но мне действительно нужно, чтобы весь проект находился под /var/www/html/, а не символизировал общую папку.

Также другим решением в соответствии с официальной документацией является редактирование конфигурации apache и изменение корня документа с /var/www/html/myproject на /var/www/html/myproject/public, но мне нужна конфигурация, чтобы оставаться внутри проекта, а не изменить конфиг апача.

Есть ли решение?


person gmponos    schedule 21.04.2018    source источник
comment
Вы можете войти в свою конфигурацию apache и изменить корень документа с /var/www/html/myproject на /var/www/html/myproject/public. Я полагаю, вы также могли бы изучить, как добавить файл .htaccess в мой проект с запретом всех разрешений.   -  person Cerad    schedule 21.04.2018
comment
Извините, я должен был упомянуть выше, что редактирование конфигурации apache не является решением.   -  person gmponos    schedule 21.04.2018
comment
Обновил вопрос выше.   -  person gmponos    schedule 21.04.2018
comment
Мне действительно нужно, чтобы весь проект находился в папке /var/www/html/ Не могли бы вы объяснить, почему? Наличие исходного кода в доступной через Интернет папке обычно считается угрозой безопасности. Кто-то может получить доступ к вашему коду и использовать обнаруженную им проблему или получить доступ к вашей конфигурации, а затем, например, возиться с вашей базой данных.   -  person dbrumann    schedule 21.04.2018
comment
Это произойдет только по причинам разработки, а не в производстве. Нет, мне трудно объяснить, почему. Дело обстоит так, как указано выше.   -  person gmponos    schedule 21.04.2018


Ответы (1)


Есть ли решение? Нет решения для того, что вы запрашиваете:

  1. У вас должны быть права на настройку Apache для настройки корня документа на:

    • /var/www/html/myproject,
    • или /var/www/html/myproject/public и установите соответствующие права доступа в конфигурационном файле apache.
  2. Помещать весь код в код в каталоге /var/www/html и предоставлять бесплатный удаленный доступ через Интернет (Apache) очень рискованно для производственных сред.

person kasor    schedule 22.04.2018