2016-05-03 57 views
3

我在laravel 5.2路由到公共文件夾的圖像不點火

Route::get('images/{filename}', function ($filename) 
{ 
    if($filename) 
    { 
     return redirect('/home'); 
    }  
}); 

如果一個人進入以下網址如下路線:www.mydomain.com/images/image_abc123.jpg,我希望它將被重定向到www.mydomain.com/home。但是路線不是觸發的,而是去顯示圖像。

有沒有建議嗎?謝謝!

編輯:這裏是我的.htaccess laravel 5.2/public目錄

<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

您是否嘗試過定義中間件? –

+0

是的,先生,我有。它也沒有被觸發。就是這樣或者我做錯了。 –

+0

你是怎麼做到的?你能告訴我嗎? –

回答

0

好吧!公共文件夾被命名爲公共的原因! 解決這個問題,你必須把這些圖像的存儲文件夾(這就是存儲文件夾是什麼,如果你有沒有想過)

Storage/app 

所以他們不公開文件夾中存在了,人們不能,除非 達到這些目標你這樣做

Route::get('images/{filename}', function ($filename) 
{ 
    // get the image named $slug from storage and display it 
    // Something like (not sure) 

     $image = File::get('images/' . $filename . '.jpg'); 

     return response()->make($image, 200, ['content-type' => 'image/jpg']); 

}); 

要達到=防止某些人或所有人從accesing文件什麼 什麼答案呢=從公職阻止文件,除非你使用的方法 我希望一切都清楚了服務主題

1

這可能是因爲你的網絡服務器下的默認。通常的默認設置通常是這樣的。

server { 
     listen 80; 
     listen [::]:80; 
     listen 443 ssl; 
     listen [::]:443 ssl; 

     server_name cards.foo *.cards.foo; 
     root /var/www/cards/public; 

     index index.php; 
     include php.conf; 

     location/{ 
       try_files $uri $uri/ /index.php$is_args$args; 
     } 
} 

注意try_files指令。這是告訴網絡服務器:

  1. 如果請求是一個現存的文件,打開它。
  2. 如果請求是一個現存目錄,請對其進行索引。
  3. 否則,將目錄作爲參數傳遞給/index.php。

因此,第一遍,「該文件是否存在?」,它說「是」,並繞過PHP 100%。你會想改變它。

+0

謝謝喬希。你的回答是有道理的。我正在使用laravel 5.2的默認.htaccess,我該如何修改它? –

+0

查看源代碼。您需要刪除'RewriteCond%{REQUEST_FILENAME}!-f'這一行。請注意,這將打破CSS和JS的所有請求。如果你需要更多關於編輯.htaccess文件的建議,你應該提出另一個SO問題。 https://github.com/laravel/quickstart-basic/blob/master/public/.htaccess – Josh

相關問題