2016-06-26 4 views
9

私は古典的なLarevel 5プロジェクト構造を持っており、すべてのリクエストをpublic/にリダイレクトする必要があります。すべてのリクエストをlaravelのpublic/folderにリダイレクトする方法5

私は古典的なホスティング環境にあるので、public/は私のドキュメントルートのサブフォルダです。

私はそれが.htaccess経由で行うことができると思いますが、まだどのように把握する必要があります。誰でも助けることができますか?

おかげ

+0

[タグ:.htaccess]、[タグ:laravel]、およびpublicを検索してください:http://stackoverflow.com/search?q=%5B.htaccess%5D+%5Blaravel%5D+public –

+0

ホスティングをよくしてください。非公開のファイルを利用可能にすることは、潜在的なセキュリティホールです。 – ceejayoz

答えて

12

2つの解決策があります。

1.あなたは以下のコードを含むindex.phpファイルを追加することができますmod_rewriteを

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

2で.htaccessファイルの使用は、とルートLaravelフォルダ(public_htmlフォルダ)の下に置きます。

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

また、これはあなたを助けるかもしれanother answerからの抜粋です。

-

  • publicサブフォルダへのすべての要求をリダイレクトするために、あなたのpublic_html/.htaccessを変更します。

    # 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/.htaccessGitHub)を持っていることを確認してください。

    # 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/laravel/publicからシンボリックリンクとして/home/user/publicを有することです。

関連する問題