Laravel: удалить публикацию из URL-адреса, одновременно сохраняя отдельные проекты

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

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

Текущий каталог wamp www Структура файла

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 из общедоступного в ваш root-проект laravel и удалите общую папку. Проблема в том, что теперь вы вынуждены включать все 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 прямо за пределы вашего проекта

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

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

Все эти вещи более экстремальные, чем использование 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 и bam! У вас есть два разных проекта laravel, каждый со своим доменом. У меня есть примерно 10 разных проектов, организованных таким образом на моем сервере, и это заставляет создавать новые проекты.

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