Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 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]