Zur Navigation

Rewrite von Rewrite

htaccess - mod rewrite

1 Mallmis

Hallo und schönen Guten Tag,

ich würde sehr gerne etwas von einer schon umgeschriebenen URL entfernen, es handelt sich hierbei um den language query. Dieser kann an die entsprechende URL angehängt werden um die Sprache zu ändern. Gerne würde ich diesen aber abschneiden. Eine der beiden URLs um die es sich handelt wurden schon folgendermaßen bearbeitet:

RewriteCond %{THE_REQUEST} \/object\.php

RewriteCond %{QUERY_STRING} ^\/object\.php\?id=([\d]+)$
RewriteRule ^\/object\.php$ https://%{HTTP_HOST}/neu\/%1? [R=301,L]

RewriteRule ^([\d]+)/?$ object.php\?id=$1 [QSA]
Jetzt kann man hier folgendes anhängen ?lang=de oder en oder es oder fr. Damit ändert sich die Sprache. Der Link sieht aber dann zum Beispiel so aus:

http://www.domain.tld/00011/?lang=de

Der andere link wäre der Basislink, also http://www.domain.tld wo auch wieder entsprechend das Sprachattribut angehängt wird.

Vielen Dank im Voraus für die Hilfe, heute stehe ich irgendwie auf dem Schlauch...

Gruß

19.04.2016 13:02

2 Jörg

Wenn das Sprachattribut *komplett* abgeschnitten wird, wie soll dann das PHP-Script Kenntnis davon erlangen? es gäbe dann ja nichts, was rewritet werden könnte.

19.04.2016 14:39

3 Mallmis

Hallo, vielen Dank für die schnelle Antwort.

Das Attribut soll natürlich dann über eine rewrite rule an object.php weitergegeben werden. die Zahl welche hier steht /00011/ entspricht ja der id. Geht sowas? Bei der nackten Basis URL denke ich nicht, aber bei der anderen?

Vielen Dank,

mallmis

19.04.2016 14:50

4 Mallmis

Hallo nochmals,

vielleicht könnte man ja als condition die REQUEST_URI nehmen:



RewriteCond %{REQUEST_URI} ^\/([\d]+)/\?lang=(de|en|es|fr)$
RewriteRule ^\/object\.php$ https://%{HTTP_HOST}/neu\/%1? [R=301,L]

RewriteRule ^([\d]+)/?$ object.php\?id=$1 [QSA]


hm und bei der zweiten geht es dann nicht mehr, klar jetzt hab ich es auch verstanden...

Mal weiter überlegen.

Gruß,

mallmis

19.04.2016 15:22

5 Jörg

Ja, der Parameter muss in irgendeiner Form in der URL stehen, sonst kann er ja nicht rewritet werden :). Du könntest höchstens eine Standard-Sprache wegkürzen, also z.B. lang=en

Alternativ könntest du den lang Parameter in einem Cookie übermitteln, statt in der URL

19.04.2016 15:25 | geändert: 19.04.2016 15:25

1 Forenmitglied fand diesen Beitrag gut

6 Mallmis

Zitat von Jörg
Ja, der Parameter muss in irgendeiner Form in der URL stehen, sonst kann er ja nicht rewritet werden :). Du könntest höchstens eine Standard-Sprache wegkürzen, also z.B. lang=en

Alternativ könntest du den lang Parameter in einem Cookie übermitteln, statt in der URL


Vielen Dank!

Wie könnte ich das mit dem wegkürzen machen?

Gruß,

Mallmis

19.04.2016 15:28

7 Jörg

Wenn der Query String keine weiteren Parameter enthält, sollte eine solche Regel schon reichen:

RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ http://example.com/$1? [R=301,L]

19.04.2016 16:54

8 Mallmis

Hallo Jörg,

vielen Dank, so werde ich es mal versuchen.

Gruß,

Mallmis

19.04.2016 18:20

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]