• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] RewriteRule Fragezeichen Problem

chappert

Hacker
Hy,

ich habe folgendes Problem das bei einer RewriteRule

Code:
RewriteCond %{HTTP_HOST} ^.*domain.de
RewriteRule ^/webcom/show_page.php?wc_c=659&wc_id=1$ http://www.domain.de/folder/888b317/index.html [R]

Wenn ich jetzt im Browser domain.de/webcom/show_page.php?wc_c=659&wc_id=1 aufrufe hängt er mier an der Ziel Adresse
immer alles ab und inklusive den Fragezeichen mit an

Code:
http://www.domain.de/folder/888b317/index.html?wc_c=659&wc_id=1

Ziel soll aber sein

Code:
http://www.domain.de/folder/888b317/index.html

Vielen Dank
 

spoensche

Moderator
Teammitglied
Willst du nur für diese URL einen Alias verwenden oder willst du suchmaschinenfreundliche URL's relisieren?
 

leanUX

Member
Das Problem liegt darin, dass auf die URL-Parameter nicht so einfach zugegriffen werden kann.

z.B. in der .htaccess (sinngemäß, auf meine Verzeichnisse angepasst)
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} wc_c=659
RewriteRule (.*)show_page.php$ /test/888b317/index.html [R]

leitet bei mir wie gewünscht
http://localhost/test/show_page.php?wc_c=659
auf http://localhost/test/888b317/index.html?wc_c=659 um

Allerdings habe ich es noch nicht mit mehreren Parametern hinbekommen.
Eigentlich habe ich gefunden, dass man den gesamten Querystring (also wc_c=659&wc_id=1)
in die RewriteCond schreiben können sollte, aber das hat bei mir nicht funktioniert. Wäre wohl
auch nicht der beste Ansatz, denn ein wc_id=1&wc_c=659 sollte ja auch funktionieren.
Man kann RewriteCond - Zeilen auch verknüpfen, ein [OR] am Ende 'ver-odert' sie (was bei mir
auch funktioniert hat), läßt man das [OR] weg so müssen beide Conditions erfüllt sein (das hat
aber bei mir noch nicht richtig hingehauen).

Auch wenn das hier noch nicht die vollständige Lösung ist, vielleicht hilft sie Dir trotzdem etwas
weiter.
 
OP
C

chappert

Hacker
@spoensche
ich möchte suchmaschinenfreundliche URL's realisieren

@leanUX
leider erscheint bei mir immer noch hinter meiner Ziel URL der Code "?wc_c=659&wc_id=1"

Code:
        RewriteCond %{QUERY_STRING} wc_c=659
        RewriteRule (.*)show_page.php$ http://www.url.de/folder/888b317/index.html [R]
 

spoensche

Moderator
Teammitglied
@chappert und @leanUX:

Eure RewriteRules modifizieren die URL nur vor den Parametern, folglich werden sie dann wieder an die "neue" URL angehängt.

Die Parameter müssen aus der URL extrahiert und in den Pfad der "neuen" URL eingesetzt werden.

Beispiel für einen Parameter:
Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule  ^/webcom /folder/%2

Mehr dazu:
http://wiki.apache.org/httpd/RewriteQueryString
http://wiki.apache.org/httpd/RewritePathInfo
 
OP
C

chappert

Hacker
sie sollen aber eben nicht in der neuen URL eingesetzt werden sondern ganz verschwinden in

ist:
Code:
http://www.domain1.de/webcom/show_page.php?wc_c=659&wc_id=1
soll:
Code:
http://www.domain2.de/folder/888b317/index.html

Zustand:
Code:
http://www.domain2.de/folder/888b317/index.html?wc_c=659&wc_id=1
muss weg:
Code:
?wc_c=659&wc_id=1
 
OP
C

chappert

Hacker
hab die Lösung jetzt gefunden
Code:
        RewriteCond %{QUERY_STRING} ^wc_c=659&wc_id=1$
        RewriteRule ^(.*)$ http://www.domain.de/folder/888b317/index.html? [L,R=301]

Wichtig in der RewriteRule hinter Domain das Fragezeichen.

Mfg
 
Oben