Избегайте общей папки laravel и открывайте непосредственно корень на веб-сервере

Я пробовал все возможные образцы в Интернете, чтобы решить эту проблему. Тем не менее это головная боль.

Я просто хочу избежать «публики» в www.mylaravelsite.com/public/ и сделать это как www.mylaravelsite.com для корневого каталога.

Теперь я не хочу избегать проблем с безопасностью, поэтому я узнал .htaccess будет лучшим способом.

Любые друзья решения?

и заранее спасибо за взаимодействие!

Предположим, что у вас есть эта структура папок на вашем сервере

 .cpanel/ public_html/ public_ftp/ .. 

И структура папок laravel

 app/ bootstrap/ public/ vendor/ composer.json artisan .. 

Вы можете создать имя папки mylaravelsite на своем сервере, public_ftp папку public_html и public_ftp , и скопировать в нее все приложение laravel, кроме общей папки, потому что вы введете все его содержимое в public_html , так что теперь у вас есть:

 .cpanel/ public_html/ public_html/packages public_html/vendor public_html/index.php public_html/.htaccess ... public_ftp/ mylaravelsite/ mylaravelsite/app mylaravelsite/bootstrap ... 

На вашем public_html/index.php измените следующую строку:

 require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php'; 

в

 require __DIR__.'/../mylaravelsite/bootstrap/autoload.php'; $app = require_once __DIR__.'/../mylaravelsite/bootstrap/start.php'; 

а также не забудьте изменить общедоступный путь /mylaravelsite/bootstrap/paths.php , вы можете использовать его.

 'public' => __DIR__.'/../public', 

в

 'public' => __DIR__.'/../../public_html', 

Ваш сайт должен работать.

Похоже, что информация отсутствует:

DocumentRoot

Это также называется «веб-корнем». Apache специально называет это DocumentRoot – щелкните эту ссылку для официального объяснения.

В основном, что он делает, задается каталог, из которого сервер извлекает файлы. В Laravel корень документа должен быть public папкой.

Установка DocumentRoot для public означает, что переход на http://mylaravelsite.com в браузере будет иметь значение «указывать» на public папку по вашему желанию.

В файле .htaccess (фактически, более вероятно, в конфигурации виртуального хоста ) вы можете установить DocumentRoot для своего сайта:

 DocumentRoot /path/to/laravel-app/public 

Как вы это настроите, зависит от вашего хостинга. Каждый хостинг имеет разные способы настройки веб-сайта, поэтому мы не можем ответить на него специально для вас – вам следует проконсультироваться с технической поддержкой веб-хостинга. Ключевым моментом является то, что public каталог должен быть веб-корнем, а все остальное должно быть «за корнем веб-сайта».

Справедливое предупреждение: некоторые хостинг-провайдеры не дают вам достаточно доступа для этого.

Создайте .htaccess в корневой папке и напишите эту строку

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> 

Для производственного сервера рекомендуется указать ваш домен непосредственно в общую папку

укажите свой веб-каталог для public/ . Если вы используете apache, это будет работать:

 <VirtualHost *:80> DocumentRoot /var/www.mylaravelsite.com/public/ ServerName www.mylaravelsite.com </VirtualHost> 

Вот решение, но не нужно делать это в реальных проектах, это просто для стартера, чтобы протестировать Laravel, и я протестировал его с помощью laravel 5.0, и он обрезает файлы index.php и .htaccess из общей папки и вставляет его в корневого каталога и измените эти две строки как

 require __DIR__.'/bootstrap/autoload.php'; $app = require_once __DIR__.'/bootstrap/app.php'; 

Настоятельно рекомендуется не использовать вышеуказанный метод без тестовой среды и вместо этого использовать виртуальный хост.

Все, что вам нужно изменить файл .env в ваших файлах проекта laravel. если ваш проект laravel внутри

Root / домен / public_html / Laravel /

Перейдите в файл .env и отредактируйте

вам нужно отредактировать путь URL-адреса приложения, который должен быть

APP_URL = http://www.domainname.com/laravel/public/

Это будет ваш проект. если ваши файлы laravel находятся в public_html, тогда ваш URL-адрес приложения должен быть таким

APP_URL = http://www.domainname.com

благодаря

Просто добавьте файл .htaccess в корень Laravel, если он отсутствует, и добавьте в него следующие строки, вот и все,

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>