RewriteRule erzeugt 500 internen Serverfehler

8

Ich habe Folgendes in meiner .htaccess-Datei:

%Vor%

Was ich versuche zu erreichen, ist dies:

Wenn die URL www.mydomain.com/directory/10 aufgerufen wird, wird die Seite www.mydomain.com/directory/?id=10 im Browser angezeigt, ohne die Darstellung der URL zu ändern.

Der obige Code erzeugt jedoch einen internen Serverfehler von 500.

Weiß jemand, wo ich falsch liege?

    
Tom 14.06.2013, 11:56
quelle

4 Antworten

16

Ihr Code generiert garantiert 500 interne Serverfehler, da er eine Endlosschleife verursacht. Grund dafür ist, dass Ihr passendes URI-Muster lautet: ^directory/(.*)$

Dies entspricht Ihren URLs vor und nach dem Neuschreiben. Und sobald es die maximale erlaubte interne Wiederbeschreibungsgrenze erreicht, löst Apache 500 interne Serverfehler aus und sperrt es.

Ändern Sie Ihren Code wie folgt:

%Vor%

Der obige Code enthält eine zusätzliche RewriteCond %{REQUEST_FILENAME} !-f , die sicherstellt, dass die nachfolgende Ausführung von RewriteRule nach dem ersten Mal nicht mehr möglich ist, da /directory/index.php eine gültige Datei sein wird.

    
anubhava 14.06.2013, 12:39
quelle
9

Ich habe das gleiche Problem und festgestellt, dass "Umschreiben" -Modul in meinem Fall noch nicht aktiviert ist. Also muss ich es aktivieren und dann Apache-Server neu starten:

  • Modul "rewrite" aktivieren: sudo a2enmod rewrite
  • Starten Sie dann den Apache-Server neu: sudo service apache2 restart

Ich hoffe, dies wird jedem helfen.

    
Brilliant 21.04.2015 04:03
quelle
1

Sie sollten versuchen, vorne einen Schrägstrich hinzuzufügen:

%Vor%

Damit bin ich schon einmal fertig geworden.

Alternativ können Sie auch die Funktionen RewriteLog und RewriteLogLevel verwenden, um zu debuggen. Weitere Informationen finden Sie in den Apache-Fehler- und Zugriffsprotokollen:

%Vor%

Das wird eine Protokolldatei in Ihrem Apache-Protokollverzeichnis hinterlassen. In meinem Fall ist das /var/log/apache

    
Paul S 14.06.2013 12:00
quelle
0

Wenn Sie CodeIgniter verwenden und Fehler 500 vorliegen. Folgen Sie der Lösung.

Um das Segment "index.php" von URLs in CodeIgniter zu löschen, müssen Sie 2 Dinge tun. Die erste besteht darin, die Datei /system/application/config/config.php zu bearbeiten und den Wert der Richtlinie index_page in leer zu ändern:

%Vor%

Der zweite Schritt besteht darin, eine Datei .htaccess

zu erstellen %Vor%

Und das ist es! Von jetzt an haben die URLs Ihrer Website / Ihres Systems, die mit CodeIgniter erstellt wurden, nicht mehr den Thread (der von einigen als "störend" bezeichnet wird) "index.php".

    
Davi Sousa 24.04.2016 15:05
quelle

Tags und Links