Leiten den gesamten Datenverkehr an index.php mit mod_rewrite
Ich versuche zu bauen, ein url-shortener, und ich möchte in der Lage sein, jedes Zeichen sofort nach der domain und Sie als variable weitergegeben url. So zum Beispiel
werden würde
Hier ist, was ich für mod_rewrite jetzt, aber ich bekomme immer einen 400 Bad Request:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?url=$1 [L,QSA]
- Blick in die
error.log
für den eigentlichen Grund. Andernfalls setzen Sie dieRewriteLog
- mögliche Duplikate von Einfache Mod Rewrite
- -1: Mehr debugging erforderlich; siehe @mario ' s Kommentar.
- Vor allem ist agood Idee, fügen Sie die RewriteBase-Direktive. Zweitens, der server erlauben mod_rewrite ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, anstelle
^(.*)
mit^(.*)$
Bearbeiten: ersetzen Sie
index.php
mit/index.php
/
vorindex.php
. Überprüfen Sie meine aktualisierte Antwort.ByTheWay vergessen Sie nicht, aktivieren mod-rewrite von apache auf ubuntu
dann starten Sie apache2 neu
edit: es ist eine alte Frage, die mir geholfen, aber ich verlor Stunden testen meiner apache2.conf-Datei auf der einen Seite und .htaccess-Datei, die auf der anderen Seite und immer noch kein Licht.
Umschreiben, die alle Anforderungen an
/index.php
,die Sie verwenden können :Die RewriteCondition
RewriteCond %{REQUEST_URI} !^/index.php$
ist wichtig, da schließt der rewrite-Ziel sind wir umschreiben zu und verhindert unendliche Schleife Fehler.Versuchen Sie es ohne mit mit
RewriteCond
.RewriteCond
Linien sind, um sicherzustellen, dass Dateien und Ordner, die es wirklich gibt nicht umgeschrieben erhalten. Zum Beispielhttp://example.com/images/logo.png
wird nicht umgeschrieben erhalten, wenn das Bild vorhanden ist.Überprüfen Sie unter Apache-Module und stellen Sie sicher, dass die rewrite-Modul aktiviert ist. Ich hatte ein ähnliches Problem und es wurde gelöst, indem die rewrite-Modul.