Как перенаправить все запросы на публикацию/папку в laravel 5

У меня есть классическая структура проекта Larevel 5, и мне нужно перенаправить все запросы на public/.

Я нахожусь в классической среде хостинга, поэтому public/ является подпапкой моего корневого документа.

Я представлю, что это можно сделать через .htaccess, но мне все же нужно выяснить, как это сделать. Кто может помочь?

Спасибо

Ответ 1

Существует два решения:

1. Использование .htaccess с mod_rewrite

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

2. Вы можете добавить файл index.php, содержащий следующий код, и поместить его под свою корневую папку Laravel (папка public_html).

<?php
header('Location: public/');

Ответ 2

Это выдержка из другого ответа, который также может помочь вам.

-

  • Измените свой public_html/.htaccess, чтобы перенаправить все запросы в подпапку public.

    # public_html/.htaccess
    
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
    
        RewriteEngine On
    
        # Redirect All Requests To The Subfolder
        RewriteRule ^ /public
    
    </IfModule>
    
  • Убедитесь, что у вас есть правильный public_html/public/.htaccess (GitHub).

    # public_html/public/.htaccess
    
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
    
        RewriteEngine On
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]
    
        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization}
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    </IfModule>
    

Ответ 3

Идеальный сценарий состоит в том, чтобы иметь /home/user/public как символическую ссылку из /home/user/laravel/public.

Ответ 4

Вам не нужно ничего менять в стандартном общедоступном файле Laravel /.htaccess.

Просто создайте новый файл .htaccess в том же самом уровне публичной папку и добавьте следующее содержимое к нему:

DirectoryIndex index.php

RewriteEngine On 
RewriteRule ^$ public/index.php [L]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

Так просто!

Ответ 5

Если вы используете cPanel, то:

1. Перейдите в папку: /var/cpanel/userdata/

2. Отредактируйте оба домена: my.domain и my.domain_SSL

Добавьте в раздел documentroot /public:

documentroot: /home/user/public_html/public

3. Перестройте конфигурацию Apache: /scripts/rebuildhttpdconf && service httpd restart