2016-06-26 15 views
9

Tôi có cấu trúc dự án Larevel 5 cổ điển và tôi cần chuyển hướng tất cả các yêu cầu đến public/.Làm thế nào để bạn chuyển hướng tất cả yêu cầu đến public/folder trong laravel 5

Tôi đang sử dụng môi trường lưu trữ cổ điển vì vậy public/ là thư mục con của tài liệu gốc của tôi.

Tôi sẽ tưởng tượng nó có thể được thực hiện thông qua .htaccess nhưng tôi vẫn cần phải tìm ra cách. Bất cứ ai cũng có thể giúp đỡ?

Cảm ơn

+0

Tìm kiếm [tag: .htaccess], [tag: laravel] và công khai: http://stackoverflow.com/search?q=%5B.htaccess%5D+%5Blaravel%5D+public –

+0

Nhận lưu trữ tốt hơn. Làm cho các tệp không công khai có sẵn là một lỗ hổng bảo mật tiềm năng. – ceejayoz

Trả lời

12

Có hai giải pháp:

1. Sử dụng .htaccess với mod_rewrite

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

2. Bạn có thể thêm một file index.php chứa đoạn mã sau và đặt nó dưới thư mục gốc của bạn Laravel (thư mục public_html).

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

Đây là trích xuất từ ​​another answer cũng có thể giúp bạn.

-

  • Sửa đổi của bạn public_html/.htaccess để chuyển hướng tất cả các yêu cầu đến public thư mục con.

    # 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> 
    
  • Hãy chắc chắn rằng bạn có đúng 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

Kịch bản lý tưởng là phải có /home/user/public như một liên kết tượng trưng từ /home/user/laravel/public.

Các vấn đề liên quan