2012-08-25 20 views
25

Używam serwera Lamp na moim komputerze. Zacząłem używać frameworka phara Laravel. W moim pliku .htaccess, jeśli użyję opcji + FollowSymLinks, otrzymam błąd 500. i gdybym wykomentuj, muszę użyć index.php w moich wszystkich adresów ..example:Co to są opcje + FollowSymLinks?

/~ytsejam/blog/public/index.php/login

Używam Arch Linux. Czy istnieje sposób, aby go rozwiązać?

edytuj: Rozwiązałem to, używając wirtualnych hostów. I usuwanie index.php z aplikacji/config/application.php w folderze laravel.

+1

Cóż, logi serwera mówią o 500s? –

+0

Błąd serwera! Serwer napotkał błąd wewnętrzny i nie był w stanie ukończyć żądania. Serwer jest przeciążony lub wystąpił błąd w skrypcie CGI. – ytsejam

+0

[Sie Aug 25 10:23:33 2012] [alert] [klient :: 1] /home/ytsejam/public_html/blog/public/.htaccess: Opcje niedozwolone tutaj – ytsejam

Odpowiedz

10

Możesz spróbować przeszukać internet w poszukiwaniu ".htaccess Opcje niedozwolone tutaj".

Sugestia znalazłem (za pomocą google) wynosi:

Sprawdź, aby upewnić się, że plik httpd.conf ma AllowOverride wszystko.

pliku .htaccess, który działa dla mnie na Linux Mint (umieszczony w katalogu/folderu publicznego laravel):

# Apache configuration file 
# http://httpd.apache.org/docs/2.2/mod/quickreference.html 

# Turning on the rewrite engine is necessary for the following rules and 
# features. "+FollowSymLinks" must be enabled for this to work symbolically. 

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 

# For all files not found in the file system, reroute the request to the 
# "index.php" front controller, keeping the query string intact 

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

Nadzieja to pomaga. W przeciwnym razie możesz zadać pytanie na forum Laravel (http://forums.laravel.com/), są tam bardzo pomocni ludzie.

3

W jaki sposób serwer wie, że powinien pobrać image.png z folderu/pictures podczas odwiedzania strony i przeglądania folderu/system/files/images w przeglądarce internetowej? Tak zwane połączenie symboliczne to facet odpowiedzialny za to zachowanie. Gdzieś w twoim systemie znajduje się dowiązanie symboliczne, które mówi serwerowi: "Jeśli użytkownik poprosi o /system/files/images/image.png, to pokaż mu /pictures/image.png".

Jaka jest rola ustawienia FollowSymLinks w tym?

FollowSymLinks odnosi się do zabezpieczeń serwera. W przypadku serwerów internetowych nie można po prostu pozostawić rzeczy nieokreślonych. Musisz powiedzieć, kto ma dostęp do czego. Ustawienie FollowSymLinks informuje serwer, czy powinien lub nie powinien podążać za dowiązaniami symbolicznymi. Innymi słowy, jeśli FollowSymLinks byłby wyłączony w naszym przypadku, przeglądanie pliku /system/files/images/image.png powróciłoby w zależności od innych ustawień albo błąd 403 (dostęp zabroniony) lub 404 (nie znaleziono).

http://www.maxi-pedia.com/FollowSymLinks

3

Parametr Options FollowSymLinks pozwala mieć symlink w webroot skierowaną do jakiegoś innego pliku/dir. Po wyłączeniu Apache nie będzie akceptował takiego dowiązania symbolicznego. Zamiast tego można użyć bardziej bezpiecznego Options SymLinksIfOwnerMatch - pozwoli to na łączenie tylko z innymi plikami, które posiadasz.

Jeśli użyjesz dyrektywy Options w .htaccess z parametrem, który został zabroniony w głównej konfiguracji Apache, serwer zwróci kod błędu HTTP 500.

Dozwolone opcje .htaccess są zdefiniowane w dyrektywie AllowOverride w głównym pliku konfiguracyjnym Apache. Aby umożliwić dowiązanie symboliczne, niniejszą dyrektywę należy ustawić na All lub Options.

Poza zezwoleniem na użycie dowiązań symbolicznych, niniejsza dyrektywa jest również potrzebna, aby umożliwić kontekstowi mod_rewrite w kontekście . Ale w tym celu można również użyć bardziej bezpiecznej opcji SymLinksIfOwnerMatch.

+1

Czy wiesz * dlaczego * jest potrzebny do 'mod_rewrite' w pliku .htaccess? Widziałem te kwalifikacje w dokumentach, ale bez żadnego wyjaśnienia poza "względami bezpieczeństwa" ... – jwd

+0

Tak, to dla bezpieczeństwa - kontrolowanie użycia przez użytkownika 'mod_rewrite' chociaż' .htaccess' plików. Lepiej byłoby, gdyby miał oddzielny parametr, ale być może moduły Apache nie mogą wprowadzić nowych parametrów dla 'AllowOverride', więc wybrały jeden z istniejących ... – Marki555

+1

Myślę, że moje pytanie, postawione inaczej, brzmiało: złośliwa osoba, której zapobiega ten dodatkowy wymóg "AllowOverride"? Nie widzę, co cię kupuje ... – jwd