Этот вопрос, похоже, беспокоит многих новичков (таких как я) при первой установке 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
Доступно много решений, но кажется, что почти все они имеют некоторый недостаток. Пожалуйста, не стесняйтесь поправлять меня по любому из нижеперечисленных вопросов, так как я задаю этот вопрос в связи с отсутствие понимания.
Переместите index.php и .htaccess из public в корневой каталог вашего проекта laravel и удалите общую папку вместе. Эта проблема
является то, что теперь вы вынуждены включать все публично
отображаются папки вашего сайта, что наверняка побеждает безопасность
цель разделения их правильно?
www
|-- mynewlaravelproject
| |-- laravelfolders
| |-- index.php (Reached at localhost/)
| |-- .htaccess
|-- project1
|-- project2
Переместите файлы laravel в другую непубличную папку. Я переместил все свои непубличные файлы в другой каталог, оставив публичные файлы в папке проекта, а затем сослался на них в моем index.php. Эта проблема в том, что теперь мне приходится работать со всеми моими контроллерами и моделями в отдельном каталоге как с общими файлами, это громоздко и требует от меня двух открытых текстовых редакторов.
laravelfiles
|-- laravelfolders (index.php is referencing bootstrap folder within)
www
|-- mynewlaravelproject
| |-- index.php (Reached at localhost/)
| |-- .htaccess
|-- project1
|-- project2
Идея заключается в том, что папка вашего проекта в вашем веб-корне будет действовать как ваша общая папка, а ваши папки 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)
Эта проблема в том, что большинство людей не рекомендуют модифицировать ваш 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 и БАМ! У вас есть два разных проекта laravel, каждый со своим доменом. У меня около 10 или около того разных проектов, расположенных так на моем сервере, и это облегчает развертывание новых проектов.
Других решений пока нет …