Я знаю, что это очень популярный вопрос, но я не смог найти работающего решения для Laravel 5. Я давно пытался перейти с Codeigniter, но этот запутанный процесс установки меня отталкивает.
Я не хочу запускать виртуальную машину, это просто неудобно при переключении между проектами.
Я не хочу устанавливать корневой каталог документа в общую папку, это также неудобно при переключении между проектами.
Я пробовал .htaccess метод mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Это просто дает мне исключение Laravel NotFoundHttpException в строке compiled.php 7610.
Когда я попробовал L4 некоторое время назад, я использовал метод перемещения содержимого общей папки в корень. Структура L5 совершенно иная, и, следуя тем же шагам, Laravel полностью сломался (сервер вернул бы только пустую страницу).
Есть ли достойный метод удаления «public» в среде разработки, который:
- Работает с L5
- Позволяет мне легко переключаться между проектами (я обычно работаю над 2 или 3 одновременно).
Спасибо
** Я использую MAMP и PHP 5.6.2
Ответы:
Для Laravel 5:
server.php
в вашей корневой папке Laravelindex.php
.htaccess
файл из/public
каталога в корневую папку Laravel.Это оно!
источник
.env
файл, если вы делаете это, если вы не согласны с тем, что люди просматривают пароль вашей базы данных в виде<Files "log.txt">Order Allow,DenyDeny from all</Files>
решает проблему, к которой вы обратились. Это сейчас безопасно или еще риск?log.txt
. Просто убедитесь, что вы блокируете конфиденциальные данные от общественности. Если вы используете Laravel и внимательно прочитаете документацию , ваш webroot будет выглядеть такproject/public
. Взгляните на обсуждение стекопотока qa . Настройте свой веб-сервер и попробуйте наhttps://example.com/.env
всякий случай. Если вы видите свои пароли, считайте все взломанным и меняйте все пароли.Я решил проблему, используя 2 ответа:
Для статики немного изменим .htaccess следующим образом:
Если нужны какие-либо другие статические файлы, просто добавьте расширение к предыдущему объявленному списку.
источник
RewriteRule ^.env - [F,L,NC]
<Files ~ "\.env$"> Order allow,deny Deny from all </Files>
В Laravel 5.5 создайте файл .htacess в корневом каталоге и поместите следующий код: - Ссылка
источник
RewriteRule ^ ^$1 [N
]?DO NOT!
ВЫ ДЕЙСТВИТЕЛЬНО НЕ СЛЕДУЕТ переименовывать
server.php
в корневой папке Laravelindex.php
и копировать.htaccess
файл из/public
каталога в корневую папку Laravel !!!Таким образом, каждый может получить доступ к некоторым вашим файлам (
.env
например). Попробуй сам. Вы этого не хотите!ДЕЛАТЬ
Вместо этого вы должны создать
.htaccess
файл в своем корне следующим образом:Это автоматически перезапишет все ваши базовые URI в
/public
папку. Даже все заголовки , например HTTP-заголовок авторизации и все необязательные параметры URI, также будут автоматически передаваться в/public
папку.Вот и все
Обратите внимание, когда настраиваете проект Laravel с помощью Docker: вам не нужно этого делать.
источник
Простой способ удалить публику из laravel 5 url. Вам просто нужно вырезать index.php и .htaccess из публичного каталога и вставить его в корневой каталог, вот и все, и заменить две строки в index.php как
Примечание . Приведенный выше метод предназначен только для начинающих, так как они могут столкнуться с проблемой при настройке виртуального хоста. Лучшее решение - настроить виртуальный хост на локальном компьютере и указать его в общем каталоге проекта.
источник
@ rimon.ekjon сказал:
Это работает для меня. Но все файлы ресурсов в каталоге / public не смогли найти, и URL-адреса запроса не работали, потому что я использовал помощник asset ().
Я изменил /Illuminate/Foundation/helpers.php/asset () следующим образом:
Теперь все работает :)
Спасибо @ rimon.ekjon и всем вам.
источник
RewriteRule ^(.*)$ public/$1 [L]
в ваш файл .htaccess, который вы скопировали из публичного каталога, удалив эту строкуRewriteRule ^(.*)/$ /$1 [L,R=301]
Просто создайте файл .htaccess в корневом каталоге и добавьте в него эти строки
Это оно!
Приведенный выше код работает в корневой папке public_html. Сказав, что ваш основной файл laravel должен находиться внутри папки public_html, если ваш каталог выглядит как public_html / laravelapp / public и если вы поместите вышеуказанный код в laravelapp, он не будет работать. Поэтому вы должны скопировать все ваши основные файлы в public_html и поместить туда файл .htaccess.
Если вы хотите сохранить код в подкаталоге, то вы можете создать поддомен, тогда этот код будет работать и для этого.
источник
Создайте
.htaccess
файл в корневом каталоге и поместите код примерно так, как показано ниже.источник
1) Я не нашел рабочего метода для перемещения общедоступного каталога в L5 . Хотя вы можете изменить некоторые вещи в начальной загрузке
index.php
, похоже, что некоторые вспомогательные функции основаны на предположении, что этот публичный каталог находится там. В общем, честно говоря, вы не должны перемещать общедоступный каталог.2) Если вы используете MAMP, вы должны создавать новые vhosts для каждого проекта, каждый из которых обслуживает публичный каталог проектов. После создания вы получаете доступ к каждому проекту с помощью определенного вами имени сервера, например:
источник
Можно удалить публичный URL в laravel5. Следуй этим шагам:
шаг 1. скопируйте все файлы из публичного и вставьте в корневой каталог
шаг 2. открыть
index.php
файл заменить нав
и
в
И удалите весь кеш и куки.
источник
Допустим, вы поместили все остальные файлы и каталоги в папку с именем «locale».
Просто зайдите в index.php и найдите эти две строки:
и измените их на это:
источник
Вот лучшее и самое короткое решение, которое работает для меня на май 2018 года для Laravel 5.5
просто вырежьте
.htaccess
файл из каталога / public в корневой каталог и замените его содержимое следующим кодом:Просто сохраните
.htaccess
файл и все.Переименуйте ваш
server.php
файл вindex.php
. это все нравится!источник
ЛУЧШИЙ ПОДХОД: я не буду рекомендовать удаление public,
on local computer create a virtual host point to public directory
аon remote hosting change public to public_html and point your domain to this directory
. Причина в том, что весь ваш код laravel будет защищен, потому что он на один уровень ниже вашего публичного каталога :)МЕТОД 1:
Я просто переименовать
server.php
в ,index.php
и это работаетСПОСОБ 2:
Это хорошо работает для всех версий Laravel ...
Вот моя структура каталогов,
Следуйте этим простым шагам
в
и
в
в
и все, попробуйте http: // localhost / laravel /
источник
4 лучших способа убрать публичность с URL.
Если вы использовали какой-либо другой трюк для удаления публики из URL, например, измените имя server.php на index.php и измените путь к файлу ядра. Очевидно, не делай этого. Тогда почему Laravel не дает такого решения, потому что это неправильный способ сделать это.
Добавив файл .htaccess в корневой каталог, вы можете получить доступ к веб-сайту без
Я даю демо здесь для операционной системы Windows. Но я постараюсь определить шаг, чтобы любой мог легко следовать за ним. Вы также можете изучить Google для того же для конкретной операционной системы.
Шаг 1: Перейдите в C: \ Windows \ system32 \ drivers \ etc \, откройте файл "hosts" в режиме администратора.
Шаг 2: Добавьте следующий код к нему. Здесь я даю вам демонстрацию демо доменного имени projectname.local, вы можете указать любой, как вам нравится. Просто сделайте это постоянным в любом месте.
Шаг 3: Теперь перейдите,
C:\xampp\apache\conf\extra
для пользователей xampp и для пользователя wamp,"C:\wamp\bin\apache\Apache2.4.4\conf\extra"
и откройте"httpd-vhosts.conf"
файл. Теперь добавьте в него следующий код.Примечания: Измените корневой каталог документа в соответствии с вашим проектом, а также добавьте имя домена, которое вы определили в файл «hosts».
Шаг 4: Последний, но важный шаг - перезапустить Xampp или Wamp и получить доступ к URL-адресу,
http://projectname.local
и ваш Laravel ответит без общедоступного URL.Если вы работаете в локальном режиме, вам не нужно ничего делать, просто нужно выполнить следующую команду из своего терминала или инструмента командной строки. После этого вы можете получить доступ к своему веб-сайту по указанному URL-адресу из командной строки.
Если вы хотите запустить свой проект на определенном IP-адресе, вам нужно выполнить следующую команду. Если вы работаете в локальной сети, то если вы хотите разрешить другим людям доступ к вашему веб-сайту из локальной сети, вам просто нужно проверить свой IP-адрес с помощью командной строки, запустив «ipconfig» после получения IP-адреса, запустив следующую команду.
Если вы хотите запустить свой проект на определенном IP-адресе с определенным портом, вам нужно выполнить следующую команду.
После завершения проекта вам нужно разместить проект на сервере, а затем просто установить корневой каталог документа в вашем домене в общую папку. Проверьте скриншот ниже.
Как показано на скриншоте, если у вас нет публичной папки проекта в public_html, вам просто нужно установить корневой каталог вашего документа
"public_html/public"
.Ссылка взята отсюда
источник
Я хотел бы добавить к @Humble Learner и отметить, что правильное расположение для «исправления» пути URL для ресурсов - /Illuminate/Routing/UrlGenerator.php/asset ().
Обновите метод для соответствия:
Это исправит сценарии, стили и пути к изображениям. Что-нибудь для путей активов.
источник
Чтобы пользователь XAMPP удалил public из url, не касаясь файловой системы laravel по умолчанию, необходимо настроить виртуальный хост для своего приложения, чтобы сделать это, просто выполните следующие действия.
Откройте приложение панели управления XAMPP и остановите Apache. Помните, что на поздних компьютерах с Windows это может быть запущено как служба, поэтому установите флажок слева от модуля Apache.
Перейдите к
C:/xampp/apache/conf/extra
или где ваши файлы XAMPP расположены.Откройте файл с именем httpd-vhosts.conf в текстовом редакторе.
Вокруг строки 19 найдите #
NameVirtualHost *:80
и раскомментируйте или удалите хэш.В самом низу файла вставьте следующий код:
C:/Windows/System32/drivers/etc/hosts
, где hosts это файл. Откройте его с помощью блокнота.127.0.0.1 localhost
Разрешение имени локального хоста обрабатывается в самом DNS.
Оригинал статьи можно найти здесь
источник
Всегда есть причина иметь общую папку в настройках Laravel, все общедоступные материалы должны присутствовать в общей папке,
Просто запишите условие перезаписи в
.htaccess
файл и установите модуль перезаписи и включите модуль перезаписи, проблема, которая добавляет public в маршрут, будет решена.источник
Я знаю, что есть много решений для этой проблемы. Лучшее и простое решение - добавить файл .htaccess в корневой каталог.
Я попробовал ответы, которые мы предоставили для этой проблемы, однако я столкнулся с некоторыми проблемами с auth: api guard в Laravel.
Вот обновленное решение:
Создайте файл .htaccess в корневом каталоге и добавьте этот код. И все идет хорошо
источник
Laravel 5.5
После установки Laravel в первый раз, я столкнулся с известной «проблемой общих папок», и я нашел это решение, которое, по моему личному мнению , «чище», чем другие, которые я нашел в Интернете.
достижения
public
слова в URI.env
файл от любопытных людейВсе можно сделать, только редактируя
.htaccess
использованиеmod_rewrite
и четыре простых правила.меры
.htaccess
файл вpublic/.htaccess
основной кореньЯ прокомментировал все, так что это должно быть понятно (я надеюсь) и тем, кто никогда не использовал
mod_rewrite
(не то, чтобы я был экспертом, все наоборот). Кроме того, чтобы понять правила, должно быть ясно, что в Laravel, если Билл подключаетсяhttps://example.com
,https://example.com/index.php
загружается. Этот файл просто содержит командуheader("refresh: 5; https://example.com/public/")
, которая отправляет запросhttps://example.com/public/index.php
. Эта секундаindex.php
отвечает за загрузку контроллера и прочего.Следующее правило (изначально в
public/.htaccess
) может быть удалено. На самом деле это же правило более подробно объясняется в двух последних правилах.РЕДАКТИРОВАТЬ: Я пропустил решение Абхинава Сарасвата , и его ответ должен быть принятым. Только одно, простое и понятное правило, которое перенаправляет весь трафик в общую папку без изменения какого-либо файла.
источник
Во-первых, вы можете использовать эти шаги
источник: https://stackoverflow.com/a/28735930
после того, как вы выполните эти шаги, вам нужно изменить все пути CSS и сценариев, но это будет утомительно.
Решение Предложение : просто вы можете внести незначительные изменения в
helpers::asset
функцию.Для этого :
открыто
vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
Перейти на линию 130
написать
"public/".$path
вместо$path
,источник
Активируйте модуль mod_rewrite с помощью
и перезагрузите апач
Чтобы использовать mod_rewrite из файлов .htaccess (что очень распространено), отредактируйте VirtualHost по умолчанию с
Ниже «DocumentRoot / var / www / html» добавьте следующие строки:
Перезагрузите сервер снова:
источник
Я читал какую-то статью раньше, и она работает нормально, но на самом деле не знаю, безопасно это или нет
Отредактируйте index.php
в
источник
Даже если я не рекомендую помещать Laravel в корневую папку, в некоторых случаях этого нельзя избежать; В этих случаях вышеуказанные методы не работают для ресурсов, поэтому я быстро исправил изменение htaccess: после копирования server.php в index.php отредактируйте файл .htaccess следующим образом:
Это было быстрое решение, которое я должен был сделать, поэтому любой желающий может его обновить.
источник
Проблема в том, что если вы напечатаете / public, и он все еще будет доступен в URL, для этого я создал исправление, которое должно быть помещено в public / index.php
этот кодекс удалит public из url и даст 404, а затем перенаправит на url без public
источник
Другой метод, который я использую, - это создание символической ссылки (в Linux я не знаю о Win) с помощью команды ln в htdocs или www, т.е.
ln projectname/public project
сайт доступен через localhost / projectисточник
Вы можете удалить публичное ключевое слово из URL, используя различные методы.
1) Если вы используете выделенный хостинг и у вас есть root-доступ, вы можете удалить публичное ключевое слово из URL, используя Virtual Host. Вы должны указать путь к DocumentRoot с помощью public. Так что это запустит индекс из публичного каталога и удалит его из URL.
2) Если у вас нет корневого доступа к вашему хостингу, вам следует создать новый файл .htaccess в корневом каталоге и поместить код, как показано ниже.
Вы можете получить больше ссылок здесь.
источник
Создайте файл .htaccess в корневой директории и поместите код, как показано ниже.
Создайте файл .htaccess в каталоге / public и поместите код, как показано ниже.
источник
Я нашел самое рабочее решение этой проблемы.
Просто отредактируйте ваш файл
.htaccess
в корневой папке и напишите следующий код. Больше ничего не требуетсяисточник
я попробовал какое-то решение здесь и нашел htaccess, который работает для laravel 5.2, например так:
если у вас есть другой файл или папка, запрещенные просто добавить
источник
Вам не нужно ничего делать, просто создайте файл .htaccess в корневом каталоге и вставьте / сохраните нижеприведенное;
источник