Избегайте общей папки laravel и открывайте непосредственно корень на веб-сервере
Я прошел через все возможные образцы в Интернете, чтобы решить эту проблему. Тем не менее это головная боль.
Я просто хочу избежать "public" в www.mylaravelsite.com/public/
и сделайте его как www.mylaravelsite.com
для корневого каталога.
Теперь я не хочу избегать проблем с безопасностью, поэтому я узнал, что .htaccess
будет лучшим способом.
Любые друзья решений?
& заранее спасибо за взаимодействие!
Ответы
Ответ 1
Предположим, что у вас есть эта структура папок на вашем сервере
.cpanel/
public_html/
public_ftp/
..
И структура папок laravel
app/
bootstrap/
public/
vendor/
composer.json
artisan
..
Вы можете создать имя папки mylaravelsite на своем сервере, вложенное в папку 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',
Ваш сайт должен работать.
Ответ 2
Создайте .htaccess в корневой папке и напишите эту строку
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Для производственного сервера рекомендуется указать ваш домен непосредственно в общую папку
Ответ 3
Похоже, что информация отсутствует:
DocumentRoot
Это также называется "веб-корнем". Apache специально называет это DocumentRoot - щелкните эту ссылку для официального объяснения.
В основном, что он делает, задается каталог, из которого сервер извлекает файлы. В Laravel корень документа должен быть папкой public
.
Установка DocumentRoot на public
означает, что переход в http://mylaravelsite.com
в браузере будет иметь значение "указывать" на папку public
, как вы хотите.
В файле .htaccess(фактически, более вероятно, в конфигурации виртуального хоста) вы можете установить DocumentRoot
для своего сайта:
DocumentRoot /path/to/laravel-app/public
Как вы это настроите, зависит от вашего хостинга. Каждый хостинг имеет разные способы настройки веб-сайта, поэтому мы не можем ответить на него специально для вас - вам следует проконсультироваться с технической поддержкой веб-хостинга. Ключевым моментом является то, что каталог public
должен быть веб-корнем, а все остальное должно быть "за корнем сети".
Справедливое предупреждение: некоторые хостинг-провайдеры не предоставляют вам достаточно доступа для выполнения этого.
Ответ 4
укажите свой веб-каталог на public/
. Если вы используете apache, это будет работать:
<VirtualHost *:80>
DocumentRoot /var/www.mylaravelsite.com/public/
ServerName www.mylaravelsite.com
</VirtualHost>
Ответ 5
Вот решение, но не нужно делать это в реальных проектах, это просто для стартера, чтобы протестировать Laravel, и я протестировал его с laravel 5.0, и он режет файлы index.php и .htaccess из общей папки и вставки он в корневом каталоге и измените эти две строки как
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
Настоятельно рекомендуется не использовать вышеуказанный метод без тестовой среды и вместо этого использовать виртуальный хост.
Ответ 6
Просто добавьте файл .htaccess в корень Laravel, если он не присутствует, и добавьте в него следующие строки, чтобы он,
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Ответ 7
Все, что вам нужно изменить .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
Спасибо
Ответ 8
Для люмена
Предположим, у вас есть путь к папке, например: /var/www/project/microservice (lumen src)
/var/www => корневой документ для localhost/
Требуемая цель: localhost/project/microservice [/foo...] => localhost/project/microservice/public/foo...
Я делаю это с помощью .htaccess (находится в папке /project), как показано ниже:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^.*/public/.*
RewriteCond %{REQUEST_URI} ^(/[^/]+/[^/]+/).*
RewriteRule ^[^/]+(.*)$ %1public$1 [L,R=301,P]