2009-08-12 6 views
5

Nachdem ich mein Kohana-Projekt auf meinen Godaddy-Server hochgeladen hatte, bemerkte ich, dass meine Standard-.htaccess-Datei nicht ausreichend funktionierte, um die sauberen URLs bereitzustellen. Nach einiger Führung endete ich mit folgenden Regel auf:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

Dies bekam wieder mein nice-URLs arbeiten, aber heute habe ich erfahren, dass es meine interne suchmaschinen brechen kann, die auch verwendet GET-Stil Variablen:

/search?terms=php 

Die Werte werden nicht von den Skripten gefunden werden. Sie befinden sich auf meinem Entwicklungsserver, der nicht über die modifizierte RewriteRule verfügt, aber nicht auf dem Godaddy-Server, der die RewriteRule verwendet.

Bin ich richtig, wenn ich annehme, dass die Regel die Fähigkeit eines Skripts, $ _GET zu lesen, bricht, und wenn ja, wie kann ich das beheben?

Antwort

8

mit QSA Vielleicht in Ihrem RewriteRules, wie folgt aus:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

Siehe manual of mod_rewrite (Zitat):

'qsappend | QSA' (Query-String Append)

Dieses Flag Erzwingt, dass die Rewrite-Engine einen Abfragezeichenfolgeteil der Ersetzungszeichenfolge an die vorhandene Zeichenfolge anfügt, anstatt zu ersetzen es. Verwenden Sie diese Option, wenn Sie dem Abfragestring über eine Regel weitere Daten hinzufügen möchten.

könnte helfen (nicht in Ihrem speziellen Fall getestet, aber ich erinnere mich diese vor einiger Zeit verwendet habe, für eine Art von Problem wie dieser)

+0

Das hat funktioniert. Ich warte und lasse andere teilnehmen (da ich sehr wenig über .htaccess weiß, und als solches, wenn dies die beste Lösung ist), bevor ich akzeptiere. Vielen Dank! – Sampson

+0

Kein Problem :-) Gern geschehen! –

1

Ich denke, Sie könnten hinzufügen: RewriteCond $1 !^(search) oder eine Variation von solchen.

0

Wenn Sie gängige Praxis verwenden mögen, und ohne Abfrage-String Sie müssen nur diese Schritte ausführen und es wird funktionieren wie Localhost Und Sie müssen nicht ändern Regeln ändern.

Gehen Sie zu Ihrem GoDaddy Konto Dateimanager -> WebRoot Verzeichnis -> php5.ini erstellen, wenn es nicht vorhanden ist und Platz folgende Zeile: Sie müssen cgi.fix_pathinfo = 1

Jetzt ist Ihre Web-Prozess neu zu starten :

1.) Melden Sie sich bei Ihrem Account Manager an. 2.) Klicken Sie auf Web-Hosting. 3.) Klicken Sie neben dem gewünschten Hosting-Konto auf Starten. 4.) Klicken Sie im Bereich Statistik & Monitore auf Systemprozesse. 5.) Klicken Sie in der Liste links auf den Prozess, den Sie anzeigen möchten, oder klicken Sie auf Alle Prozesse, um alle Prozesse gleichzeitig anzuzeigen. 6.) Um einen Prozess zu beenden, klicken Sie auf die entsprechende Schaltfläche in der Symbolleiste.

Jetzt können Sie URI_PROTOCOL als Auto verwenden.