Как перенаправить все запросы в папку public/ с помощью .htaccess в Laravel

Если вы установили Laravel в свой основной домен для учетной записи в папке public_html (корневой каталог основного домена), но не хотите, чтобы ваши посетители видели URL-адрес домена по умолчанию.com/public, выполните следующие действия:
Способ символической ссылки (рекомендуется)

1. Предположим, что у вас есть приложение Laravel в каталоге /home/user/laravel. (пользователь — это имя пользователя вашей учетной записи хостинга)

Подключитесь к вашему серверу по SSH или используйте Терминал в Cpanel и перейдите домой с помощью cd ~.
Создайте резервную копию каталога public_html, если в нем есть какой-либо важный файл.
Удалите каталог public_html, запустив rm -rf public_html.

2. Теперь создайте символическую ссылку с именем public_html, указывающую на общедоступный каталог ваших приложений laravel, выполнив:


ln -s /home/user/laravel/public public_html

Теперь public_html — это просто символическая ссылка на общедоступный каталог вашего приложения.
Если что-то изменится в общедоступном каталоге вашего приложения, оно будет немедленно доступно пользователям.


3. Путь .htaccess 

Найдите файлы .htaccess в вашем public_html (или корневой папке вашего домена). По умолчанию точечные файлы скрыты в вашем файловом менеджере. Чтобы просмотреть все точечные файлы, войдите в свою cPanel и щелкните «Диспетчер файлов», где вы сможете увидеть все файлы в своей учетной записи. Чтобы отобразить скрытые файлы (также называемые «точечными» файлами), нажмите кнопку «Настройки» в правом верхнем углу диспетчера файлов. Если вы по-прежнему не можете найти файл .htaccess, создайте новый файл в диспетчере файлов с именем .htaccess.
После открытия файла .htaccess добавьте следующий код:

<IfModule mod_rewrite.c>

<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On
# Prevent direct access to the "public" folder - redirect to root
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /public/
RewriteRule ^public/(.*) /$1 [R=302,L]

# Redirect Trailing Slashes If Not A Folder...
# - but look for the file in the "public" folder
# (ensure we are not already in the "public" folder)
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{DOCUMENT_ROOT}/public/$1 !-d
RewriteRule ^(.*)/$ /$1 [R=302,L]

# Rewrite "everything" to the "public" subdirectory if not already
# This ignores existing files/dirs in the document root
RewriteCond %{REQUEST_URI} ^/(.*)
RewriteRule !^public/ public/%1

# Handle Front Controller... (as before)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

 

4. Нажмите «Сохранить изменения». После этого вы и ваши посетители смогут получить доступ к вашей общей папке Laravel через домен.com. Имейте в виду, что вам, возможно, придется очистить кеш браузера.

Если вы хотите установить Laravel в папку, отличную от папки public_html (например, если у вас уже есть другой сайт на вашем основном доменном имени), мы настоятельно рекомендуем вам создать для него поддомен (например, laravel.domain.com). . После установки Laravel на вновь созданный субдомен вы можете выполнить описанные выше шаги. Это также справедливо, если вы установили Laravel в дополнительный домен под своей учетной записью.

  • laravel, htaccess
  • 239 Пользователи нашли это полезным
Помог ли вам данный ответ?