2012-08-25 12 views
25

Ich verwende einen Lamp Server auf meinem Computer. Ich begann Laravel PHP Framework zu verwenden. In meinem .htaccess, wenn ich Optionen + FollowSymLinks verwende, bekomme ich 500 Fehler. Und wenn ich auf Kommentar, ich habe index.php in meinen alle Adressen verwenden ..example:Was sind Optionen + FolgenSymLinks?

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

I Arch Linux verwenden. Gibt es eine Möglichkeit, es zu lösen?

edit: Ich löste das mit virtuellen Hosts. Und lösche index.php aus der application/config/application.php im Laravel-Ordner.

+1

Nun, Server-Log sagt, was ist mit den 500s? –

+0

Serverfehler! Der Server hat einen internen Fehler festgestellt und konnte Ihre Anfrage nicht abschließen. Entweder ist der Server überlastet oder es liegt ein Fehler in einem CGI-Skript vor. – ytsejam

+0

[Sa Aug 25 10:23:33 2012] [alert] [client :: 1] /home/ytsejam/public_html/blog/public/.htaccess: Optionen sind hier nicht erlaubt – ytsejam

Antwort

10

Sie könnten versuchen, das Internet nach ". Htaccess Optionen nicht hier erlaubt".

Ein Vorschlag, den ich (mit Google) gefunden ist:

überprüfen, um sicherzustellen, dass Ihre httpd.conf AllowOverride All hat.

Eine .htaccess-Datei, die für mich auf Mint Linux (platziert in der Laravel/Öffentliche Ordner) funktioniert:

# 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> 

Hoffnung, dies hilft Ihnen. Ansonsten könntest du im Laravel Forum (http://forums.laravel.com/) eine Frage stellen, da sind einige wirklich hilfsbereite Leute da.

3

Woher weiß der Server, dass er image.png aus dem Ordner/pictures ziehen sollte, wenn Sie die Website besuchen und zum Ordner/system/files/images in Ihrem Webbrowser navigieren? Ein sogenannter symbolischer Link ist der Typ, der für dieses Verhalten verantwortlich ist. Irgendwo in Ihrem System gibt es einen Symlink, der Ihrem Server mitteilt, "Wenn ein Besucher /system/files/images/image.png anfordert, zeigen Sie ihm /pictures/image.png".

Und was ist die Rolle der FollowSymLinks Einstellung in diesem?

FollowSymLinks bezieht sich auf Serversicherheit. Wenn Sie mit Webservern arbeiten, können Sie Dinge nicht undefiniert lassen. Sie müssen sagen, wer Zugriff auf was hat. Die Einstellung FollowSymLinks teilt Ihrem Server mit, ob Symlinks folgen sollen oder nicht. Mit anderen Worten, wenn FollowSymLinks in unserem Fall deaktiviert war, würde das Browsen zur Datei /system/files/images/image.png abhängig von anderen Einstellungen entweder den 403 (Zugriff verboten) oder 404 (nicht gefunden) Fehler zurückgeben.

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

3

Parameter Options FollowSymLinks können Sie eine symlink in Ihrem Webroot haben Hinweis auf eine andere Datei/dir. Wenn dieser Parameter deaktiviert ist, wird Apache einem solchen Symlink nicht folgen. Sicherer Options SymLinksIfOwnerMatch kann stattdessen verwendet werden - dies ermöglicht Ihnen, nur mit anderen Dateien, die Sie besitzen, zu verknüpfen.

Wenn Sie die Options Direktive in .htaccess mit Parameter verwenden, der in der Apache-Hauptkonfiguration verboten wurde, gibt der Server HTTP 500-Fehlercode zurück.

Erlaubt .htaccess Optionen werden durch die Direktive AllowOverride in der Apache-Hauptkonfigurationsdatei definiert. Um Symlinks zuzulassen, muss diese Direktive auf All oder Options gesetzt werden.

Neben der Verwendung von Symlinks ist diese Anweisung auch erforderlich, um mod_rewrite in .htaccess Kontext zu ermöglichen. Dafür kann aber auch die sicherere SymLinksIfOwnerMatch Option verwendet werden.

+1

Wissen Sie, * warum * es benötigt wird 'mod_rewrite' in .htaccess Dateien? Ich habe diese Qualifikation in den Dokumenten gesehen, aber keine andere Erklärung als "Sicherheitsgründe" ... – jwd

+0

Ja, es ist für die Sicherheit - die Verwendung von 'mod_rewrite' durch' '' '' .htaccess' Dateien zu kontrollieren. Besser wäre es, wenn es separate Parameter hätte, aber vielleicht können Apache-Module keine neuen Parameter für "AllowOverride" einführen, also haben sie eine der vorhandenen gewählt ... – Marki555

+1

Ich denke, meine Frage, anders ausgedrückt, war: Was könnte eine böswillige Person, die diese zusätzliche 'AllowOverride'-Anforderung verhindert? Ich sehe nicht, was es dir tatsächlich kauft ... – jwd