2017-05-09 1 views
1

Im Rahmen einer Website Redesign, würde ich statische URLs mit lang Param auf statische URLs in einer anderen Domäne umleiten, mit .htaccess. URLs wie folgt gebaut:Redirect 301 statische Variable Lang URLs zu einer anderen Domain

www.example.com/first-page/?lang=it >> www.example.it/prima-pagina/ 
www.example.com/first-page/?lang=fr >> www.example.fr/premiere-page/ 

www.example.com/another-page/?lang=it >> www.example.it/unaltra-pagina/ 
www.example.com/another-page/?lang=fr >> www.example.fr/autre-page/ 

www.example.com/folder/last-page/?lang=it >> www.example.it/record/ultima-pagina/ 
www.example.com/folder/last-page/?lang=fr >> www.mydomain.fr/dossier/derniere-page/ 

Ich habe bereits versucht einfach Umleitungen wie RedirectMatch 301 ....... Und auch mehr complexe URLs mit RewriteCond und RewriteRule erfolglos beide ...

Antwort

0

werden Sie Sie müssen mod_rewrite (RewriteCond/RewriteRule) verwenden, um den Abfragezeichenfolgeteil der URL zu finden.

Da zwischen den URL-Pfaden der Quell- und Ziel-URLs keine Korrelation zu bestehen scheint und diese für jede Sprache unterschiedlich zu sein scheinen, müssen Sie alle einzeln unter .htaccess eingeben.

Zum Beispiel:

www.example.com/first-page/?lang=it >> www.example.it/prima-pagina/ 
www.example.com/first-page/?lang=fr >> www.example.fr/premiere-page/ 

Folgende Abdeckungen nur die ersten beiden Umleitungen.

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^lang=(it) 
RewriteRule ^first-page/$ http://www.example.%1/prima-pagina/? [R,L] 

RewriteCond %{QUERY_STRING} ^lang=(fr) 
RewriteRule ^first-page/$ http://www.example.%1/premiere-page/? [R,L] 

Die parenthesised Submuster (z. (fr)) eine Erfassungsgruppe und ermöglicht eine Rückreferenzierung des Formulars %1 auf den Inhalt zu beziehen (z. fr) in der RewriteRuleSubstitution. Wenn Sie keine Klammern verwenden, können Sie dies nicht tun.

Die ? am Ende der Ersetzung entfernt die Abfragezeichenfolge aus der Anfrage.

Wenn diese permanente Umleitungen sein sollen, dann ändern Sie die R in R=301, aber nur wenn Sie bestätigt haben, dass es funktioniert OK. (301s werden vom Browser im Cache zwischengespeichert.)

UPDATE: Wenn der URL-Parameterwert nicht mit der Domänen-TLD übereinstimmt, müssen Sie nur explizit angeben und benennen. Zum Beispiel:

RewriteCond %{QUERY_STRING} ^lang=aa 
RewriteRule ^first-page/$ http://www.example.bb/prima-pagina/? [R,L] 
+0

Hallo. Danke für deine Antwort. Es scheint, dass es nicht funktioniert. Nichts passiert. Ich habe es mit oder ohne "Unterordner" versucht, mit und ohne "(" und ")" um den Sprachparameter herum. Ich habe auch versucht, "% 1" zu entfernen und es durch das Domain Ext zu ersetzen. - Plus: Was kann ich tun, wenn der lang param nicht gleich der Domainendung ist? – Romain

+0

Haben Sie andere Anweisungen in Ihrer '.htaccess' Datei? Irgendwelche anderen '.htaccess' Dateien? Ist mod_rewrite installiert/aktiviert? Sind '.htaccess' Dateien erlaubt? Ich habe meine Antwort in Bezug auf die Langparam vs Domäne ext geändert, die anders ist - in diesem Fall müssen Sie nur beide angeben (keine Verknüpfung). Auch ein bisschen mehr Informationen hinzugefügt, die die Regex erklären (dh. '(', ')' Und '% 1'). – MrWhite

+0

Thans wieder. Ja, ich habe bereits Anweisungen in meiner '.htaccess' Datei, die für Worpress verwendet wird. Ich habe versucht, Ihre Rewrite-Regeln in die '' Zone zu setzen, ohne Erfolg. Aber es scheint, dass die Homepages funktionieren: 'RewriteCond% {QUERY_STRING}^lang = de RewriteRule^http: //www.domain .com /? [R = 301, L] 'aber nicht die internen Seiten. – Romain