2016-06-26 1 views
9

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

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

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

Благодаря

+0

Поиск [tag: .htaccess], [tag: laravel] и public: http://stackoverflow.com/search?q=%5B.htaccess%5D+%5Blaravel%5D+public –

+0

Получите лучший хостинг. Предоставление непубличных файлов является потенциальным ядром безопасности. – ceejayoz

ответ

12

Есть два решения:

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

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

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

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

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

-

  • Изменить ваш 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> 
    
0

Идеальный сценарий должен иметь /home/user/public как линке от /home/user/laravel/public.