Zur Navigation

Weiterleiten einer URL abhängig vom Query String [6]

..bei Anwesenheit von mehreren Query Strings

51 kasseljulian

Lieber Jörg,

eine Frage hat sich mir aufgetan, bezüglich deiner geschilderten Lösung:

RewriteEngine on

RewriteCond %{QUERY_STRING} name=sitename
RewriteRule ^index\.php$ http://example.com/index.php?name=sitenameNEW [R=301,L]

Wenn der name (jetzt 'sitename') nun mit einem ü ä ö o.Ä. bestückt ist, wie würde die Weiterleitung dann lauten? Derzeit wenn ich z.B. example.com/index.php?name=ü eingebe, wird das ü durch %FC ersetzt und es findet keine Weiterleitung statt.
Ich habe jedoch eine URL, die in Ü beinhaltet.
Gibt es dafür auch eine Variante?

Liebe Grüße



HINZUFÜGUNG: Ich schätze ich habe mir meine Frage selber beantwortet:
Statt dem ü gebe ich %FC in der .htacces Datei an und erzwinge damit das Ü.

Falls nicht, bin ich für jede Belehrung offen :)

01.11.2011 19:14 | geändert: 01.11.2011 19:17

52 Jörg Kruse

Ja, der Browser codiert das ü, bevor er die Anfrage an den Server stellt;
die Standard-Codierung erfolgt in UTF-8 und ergibt für ü ein "%C3%BC"; daneben gibt es noch die ältere Codierung in ISO 8859-1 mit dem Ergebnis "%FC" für ü; ich würde hier beide Codierungen berücksichtigen:

RewriteCond %{QUERY_STRING} name=%C3%BC [OR]
RewriteCond %{QUERY_STRING} name=%FC

01.11.2011 19:54

53 Carsten (Gast)

Das ist ja ein spannender Thread :-) Ich hab folgendes Problem, und hoffe ihr könnt mir helfen:

Ich habe einen Parameter ohne Wert:

/home.weblog.html?rss

und will genau diese Url umleiten auf /feed/

Ich habs folgendermaßen probiert, aber ohne Erfolg:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^rss$
RewriteRule ^home\.weblog\.html$ /feed/? [R=301,L]

It only works, if i put a value to the parameter – for example rss=0 and do the redirect like that:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^rss=0$
RewriteRule ^home\.weblog\.html$ /feed/? [R=301,L]

Schaut aus, als ob der Paratemer ras nicht im %{QUERY_STRING}… ist, und die RewriteCond nicht greift...

Wie kann ich das Problemen lösen?


26.11.2011 12:36

54 Jörg Kruse

Bei mir funktioniert die Weiterleitung von /home.weblog.html?rss mit dem angegebenen Code. Getestet habe ich das mit den Browsern Opera, Firefox und Chromium sowie der Webserver-Version Apache/2.2.16 unter Debian 6

26.11.2011 13:51

55 Carsten... (Gast)

Ich denke mal da hat es nen Konflikt mit anderen Einträgen gegeben. Ich hab den Code an ne andere Stelle gesetzt, und nun geht bei mir auch :-)

Danke!

26.11.2011 18:23

... 3 Monate später ...

56 Thomas_x1 (Gast)

So ich hab' mir den Thread auch durchgelesen, weil ich dasselbe Problem habe. Aus irgendeinem Grund mag es bei mir aber einfach nicht laufen. Ich hab's dasselbe Problem wie der Ersteller des Thema's, ich möchte eine SEO "unfreundliche" URL auf eine freundliche umleiten, dazu benutze ich folgendes in der .htaccess:

RewriteCond %{QUERY_STRING} option=com_content&view=frontpage&Itemid=26$
RewriteRule index\.php http://www.example.org/maingallery.html? [R=301,L,NC]

Aber irgendwie mag das nicht funktionieren?

20.03.2012 09:30

57 Thomas_x1 (Gast)

Die originale URL enthält übrigens kein "index.php" sondern sieht so aus:

http://www.example.org/?option=com_content&view=frontpage&Itemid=26

liegt es vielleicht daran?

20.03.2012 09:35

58 Jörg Kruse

Aber irgendwie mag das nicht funktionieren?

Das "irgendwie" bedarf da schon etwas genauerer Beschreibung (z.B.Fehlermeldungen)

Ich vermute mal, dass du maingallery.html in einer anderen Rule auf die dynamische URL rewritest und dadurch eine Endlosweiterleitung auslöst. In dem Fall würde ich auf THE_REQUEST statt auf QUERY_STRING prüfen (siehe auch diesen aktuellen Thread)

Die originale URL enthält übrigens kein "index.php" sondern sieht so aus:
http://www.example.org/?option=com_content&view=frontpage&Itemid=26
liegt es vielleicht daran?

Das kannst du ausprobieren, indem du "index\.php" durch "^$" ersetzt

20.03.2012 09:52 | geändert: 20.03.2012 09:54

... 6 Monate später ...

59 Matze (Gast)

Hallo Jörg,

dein Forum scheint mir wirklich das kompetenteste zu diesem Thema zu sein. Daher stelle ich meine Frage auch mal hier. Ich möchte meine alten Joomla-URLs mit vielen Variablen auf die jeweils passenden neuen (mit 301) weiterleiten lassen. Meine URLs sehen so aus:

Alt:
http://www.kdkgmbh.de/index.php?option=com_content&view=article&id=48&Itemid=57

Neu:
http://www.kdkgmbh.de/dienstleistungen/kalibrierung

Laut diesem Thread müsste das für dieses Beispiel doch eigentlich so gehen:

RewriteCond %{QUERY_STRING} option=com_content&view=article&id=48&Itemid=57
RewriteRule index\.php http://www.kdkgmbh.de/dienstleistungen/kalibrierung? [L,R=301]

Leider passiert damit aber gar nichts. Hast du eine Idee, an was das liegen könnte? Hier meine komplette .htaccess:

AddHandler x-httpd-php5 .js
AddHandler x-httpd-php .js
AddType application/x-httpd-php5 .js
AddType application/x-httpd-php .js

RewriteEngine On

RewriteBase /

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,R=301]
RewriteRule index\.php http://www.kdkgmbh.de/ [R=301]

RewriteCond %{QUERY_STRING} option=com_content&view=article&id=48&Itemid=57
RewriteRule index\.php http://www.kdkgmbh.de/dienstleistungen/kalibrierung? [L,R=301]

Vielen Dank im Voraus!

21.09.2012 12:14

60 Jörg Kruse

Die Reihenfolge ist hier oft entscheidend. Ich würde die Weiterleitung oberhalb derJoomla Section platzieren.

21.09.2012 12:18