Я пробовал все возможные образцы в Интернете, чтобы решить эту проблему. Тем не менее это головная боль.
Я просто хочу избежать «публики» в 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',
Ваш сайт должен работать.
Похоже, что информация отсутствует:
Это также называется «веб-корнем». 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>