2017-01-12 6 views
0

Hier ist, was ich versuche zu erreichen:RewriteCond% {QUERY_STRING}

http://example.com/real-estate/?group=rentals Bedürfnisse gehen http://example.com/real-estate/rentals

Hier ist, was ich in meinem .htaccess haben, das nicht funktioniert:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/real-estate/ [NC] 
RewriteCond %{QUERY_STRING} ^group=rentals 
RewriteRule (.*) http://example.com/real-estate/rentals/? [NC,R=301,L] 
</IfModule> 
+0

Dies ist sehr ungewöhnlich ... Typischerweise wollen die Leute die Umleitung umgekehrt. Ihre eingehende http-Anfrage lautet also wirklich "http: //example.com/real-estate/? Group = rentals" und die sichtbare URL sollte in "http: // example.com/real-estate/rentals" geändert werden. _Really? _ – arkascha

+0

Das ist richtig. – chrislovessushi

Antwort

0

Dies ist sehr ungewöhnlich ... Typischerweise wird die Umleitung Menschen auf die andere Art und Weise wollen ....

Ihr Code sieht fast gut aus, nur kleinere Korrekturen. Aber diejenigen sein könnte, was Sie vermissen:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^/real-estate/?$ [NC] 
    RewriteCond %{QUERY_STRING} ^group=rentals$ 
    RewriteRule^http://example.com/real-estate/rentals [R=301,L] 
</IfModule> 

Hierzu werden die Regeln arbeiten müssen entweder direkt in der http-Hosts Konfiguration platziert werden, oder in einem .htaccess Style-Datei im Document-Root-Hosts mit aktivierter Interpretation solcher Dateien.

Und ein allgemeiner Hinweis: Sie sollten immer solche Regeln in der http-Server-Host-Konfiguration anstelle von .htaccess Stil Dateien bevorzugen. Diese Dateien sind notorisch fehleranfällig, schwer zu debuggen und verlangsamen den Server wirklich. Sie werden nur als letzte Option für Situationen angeboten, in denen Sie keine Kontrolle über die Host-Konfiguration haben (lesen Sie: wirklich günstige Hosting-Service-Provider) oder wenn Sie eine Anwendung haben, die eigene Schreibregeln schreibt (was ein offensichtlicher Sicherheitsalarm ist)).

+0

Leider hat das immer noch nicht funktioniert. – chrislovessushi

+0

@chrislovessushi "hat nicht funktioniert" hilft nicht, Sie müssen mehr Details zu dieser Aussage hinzufügen. Was geschieht? Was siehst du? Wie lauten die Einträge in Ihrer HTTP-Server-Fehlerprotokolldatei? Ist die Interpretation von '.htaccess' Style-Dateien _really_ konfiguriert? – arkascha

+0

Ich habe den obigen Code (natürlich unter example.com) in meine .htaccess-Datei im Stammverzeichnis meiner Site eingefügt. Wenn ich example.com/real-estate/?group=rentals besuche, wird die Seite normal geladen. Ich brauche die URL, um zu example.com/real-estate/rentals zu wechseln – chrislovessushi

0

Verwenden Sie einfach diese in Ihrer .htaccess Datei:

RewriteEngine On 
RewriteRule ^real-estate/([^/]*)$ /real-estate/?group=$1 [L] 

Es wird Sie verlassen mit der URL: http://example.com/real-estate/rentals. Stellen Sie sicher, dass Sie Ihren Cache löschen, bevor Sie dies testen.

+0

Ich habe den Cache gelöscht, aber die URL wird weiterhin als example.com/real-estate/?group=rentals angezeigt. Können Sie sich einen Grund dafür vorstellen? – chrislovessushi

+0

Was haben Sie noch in Ihrer '.htaccess' Datei? Wie oben erwähnt, sollte ohne Problem funktionieren. – Lag

Verwandte Themen