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