Laravel: удаляет public из url, сохраняя при этом отдельные проекты

Этот вопрос, похоже, беспокоит многих новичков (таких как я) при первой установке laravel. Мы не хотим иметь «localhost / public /» в URL-адресе и предпочитаем чистый URL-адрес. ЭТО НЕ ВОПРОС О том, КАК ИЗБАВИТЬСЯ от «публичного» в URL, так как на этот вопрос уже есть много ответов.

Мой вопрос «Как я могу удалить« public »в URL, сохранив при этом мои файлы laravel в той же директории, но также отдельно от других моих проектов в моей общедоступной корневой папке html / web?»

www
|-- mynewlaravelproject
|   |-- laravelfolders(non public folders and files)
|   |-- public
|       |-- index.php (Reached at localhost/public)
|       |-- .htaccess
|-- project1
|-- project2

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

1. Переместите index.php и .htaccess

Переместите index.php и .htaccess из public в корневой каталог вашего проекта laravel и удалите общую папку вместе. Эта проблема
является то, что теперь вы вынуждены включать все публично
отображаются папки вашего сайта, что наверняка побеждает безопасность
цель разделения их правильно?

    www
|-- mynewlaravelproject
|   |-- laravelfolders
|   |-- index.php (Reached at localhost/)
|   |-- .htaccess
|-- project1
|-- project2

2. Переместите файлы проекта в другое место, но храните открытые файлы в проекте

Переместите файлы laravel в другую непубличную папку. Я переместил все свои непубличные файлы в другой каталог, оставив публичные файлы в папке проекта, а затем сослался на них в моем index.php. Эта проблема в том, что теперь мне приходится работать со всеми моими контроллерами и моделями в отдельном каталоге как с общими файлами, это громоздко и требует от меня двух открытых текстовых редакторов.

    laravelfiles
|-- laravelfolders (index.php is referencing bootstrap folder within)
www
|-- mynewlaravelproject
|   |-- index.php (Reached at localhost/)
|   |-- .htaccess
|-- project1
|-- project2

3. Переместите папки Laravel в область вне вашего проекта.

Идея заключается в том, что папка вашего проекта в вашем веб-корне будет действовать как ваша общая папка, а ваши папки laravelfol будут находиться в родительском веб-корневом каталоге. Этот кажется наиболее разумным, но эта проблема в том, что теперь мои папки и файлы laravel смешаны между ВСЕМИ моими другими проектами в моем корневом веб-каталоге wamp. Это грязно и сложно управлять файлами & папки в текстовом редакторе.

    www
|-- mynewlaravelproject(now acts as your public folder)
|   |-- index.php (Reached at localhost/)
|   |-- .htaccess
|-- laravelfolders (This gets messy fast)
|-- project1 (alongside this...)
|-- project2 (...and this)

4. Измените ваш .htaccess ИЛИ используйте виртуальный сервер

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

2

Решение

Все эти вещи более экстремальны, чем использование VirtualHost. Вот для чего нужны виртуальные хосты! У вас есть один сервер, и он нужен вам для обслуживания нескольких сайтов. Таким образом, вы сопоставляете несколько доменов с сервером, используя hosts файл, затем вы показываете другую корневую папку для каждого сайта в зависимости от домена. Итак, в вашем файле hosts:

127.0.0.1        myproject.dev
127.0.0.1        myotherproject.dev

Конфигурационный файл Apache:

Listen *:80

NameVirtualHost *:80

<VirtualHost *:80>
ServerName myproject.dev
DocumentRoot "C:/wamp/www/myproject/public"</VirtualHost>
<VirtualHost *:80>
ServerName myotherproject.dev
DocumentRoot "C:/wamp/www/myotherproject/public"</VirtualHost>

Перезапустите Apache и БАМ! У вас есть два разных проекта laravel, каждый со своим доменом. У меня около 10 или около того разных проектов, расположенных так на моем сервере, и это облегчает развертывание новых проектов.

Источники: http://www.trailheadinteractive.com/creating_multiple_virtual_sites_a_single_apache_install_windows_xp

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]