2015-03-23 15 views
10

Mam folder, który umieściłem w folderze/public w mojej witrynie Laravel. Ścieżka jest:Jak przejść do folderu statycznego w Laravel

/public/test 

folder „test” ma plik o nazwie index.html to tylko statyczny zasób chcę załadować z folderu publicznego (nie chcę utworzyć widok dla tego ciągu ramy - zbyt wiele do wyjaśnienia).

Zrobiłem trasę tak:

Route::get('/test', function() { 
    return File::get(public_path() . '/test/index.html'); 
}); 

nie jestem w stanie uzyskać to do pracy. Właśnie pojawia się błąd w Chrome, że ta strona ma pętlę przekierowania.

mogę do niego dostęp w ten sposób:

http://www.example.com/test/index.html 

Ale nie mogę używać rozszerzenia .html wszędzie. Plik musi być widoczny jako:

http://www.example.com/test/ 

Jak mogę służyć pojedynczej strony HTML z folderu publicznego laravel bez konieczności korzystania rozszerzenie .html?

Odpowiedz

8

stosowane do wcześniej zmierzyć się z tym problemem, jak brudny mały podstęp, można zmienić nazwę folderu testowego do czegoś innego następnie zaktualizować

return File::get(public_path() . '/to new folder name/index.html'); 

klawisz ma konfliktu między url trasy z folderu publicznego

+0

To działało. Jak już powiedziałeś, kluczem jest upewnienie się, że twoja ścieżka i ścieżka (folder) w katalogu publicznym mają różne nazwy. Dzięki za pomoc! – ChiCgi

2

Zastosowanie:

return Redirect::to('/test/index'); 

albo na funkcji w pliku trasy lub wewnątrz kontrolera.

+1

To nie zadziałało. Nadal dostaję błąd pętli przekierowania. – ChiCgi

2

Dla pliku statycznego, wydaje mi się, że marnujesz zasoby, które służą za pośrednictwem Laravel.

W przeszłości istniały błędy, które powodowały nieskończone przekierowania podczas próby uzyskania dostępu do plików/folderów w ramach public, ale myślę, że najnowsze .htaccess dołączone do Laravel ma te rozwiązania (przynajmniej na Apache). Wygląda na to, że: "Jeśli żądanie nie dotyczy istniejącego folderu, usuń końcowy ukośnik, jeśli taki istnieje. Jeśli żądanie nie dotyczy istniejącego lub istniejącego pliku, załaduj plik Laravel's index.php '

Następnie dodałem plik .htaccess do podkatalogu, aby upewnić się, że DirectoryIndex jest ustawiony tak, że zostanie załadowany plik index.html domyślnie na żądanie dla katalogu.

Powiązane problemy