2016-05-27 4 views
1

Ich habe eine mehrsprachige Website, die je nach Sprache in verschiedenen Domänen funktioniert. Alle Domains haben den gleichen Fontcode und die Website (Drupal) bestimmt die Sprache anhand des Pfades. Im Moment habe ich jede Domäne konfiguriert ist, um seine eigene Sprache umgeleitet werden, so ich habe:Ändern der Domäne abhängig vom URL-Pfad

  • www.example.com -> www.example.com/en
  • www.example. es -> www.example.es/es
  • www.example.ru -> www.example.ru/ru

auf diese Weise, wenn ein Benutzer auf die Website gelangt die cms wird die Sprache auf den Schalter eine entspricht dieser Domäne.

Mein Problem ist, dass, wenn jemand den Sprachumschalter auf der Website benutzt, es alle Abfrageparameter ändert sich in dieser Sprache den Inhalt anzuzeigen entsprechenden aber die Domain nicht so ändern, wenn ich in www.example.com/en/something und Schalter bin zu spanisch werde ich in www.example.com/es/algo enden.

I de Domain benötigen würde auch die Sprache entsprechend zu ändern (was immer wie /en geschrieben wird, /es, /ru kurz nach dem Domain-Namen) und, falls möglich, halten Sie die Abfrageparameter.

Ich habe diesen Code in dem .htaccess geschrieben (für russische nur als Test), aber ich fürchte, es kann völlig falsch sein, da es nichts tut:

RewriteCond %{REQUEST_URI} ^/ru$1 
    RewriteRule ^$1 http://www.example.ru/ru$1 [L,R=301] 

Jede Beratung wäre sehr hilfreich ve.

+0

Wher Hast du den Code bekommen? es hat zu viele syntex-Fehler, $ 1 ist nicht zulässig in Cond-Pattern und Rewrite-Pattern. – starkeen

+0

Ja, ich fürchte, mein Wissen über die Syntax ist fast nicht vorhanden und ich bin wie dieser Hund in einem Labor (ich habe keine Ahnung, was ich mache). –

+0

dupe: http://stackoverflow.com/questions/37477953/rewritecond-and-rewriterule-to-redirect-pending-on-the-domain – starkeen

Antwort

2

Setzen Sie diese vor Ihren bisherigen Regeln:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ 
RewriteRule ^en/(.*)$ http://www.example.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.example\.ru$ 
RewriteRule ^ru/(.*)$ http://www.example.ru%{REQUEST_URI} [L,R=301] 

... 
Seien Sie

beachten Sie, dass auf diese Weise, wenn zum Beispiel Benutzer www.example.ru/en/something eintritt, wird die /en in Weg wichtiger sein als .ru in Host-Namen, so dass ich Umleitung zu www.example.com/en/something

+0

Das ist genau das, was ich brauche, der Parameter/lang, um eine Umleitung auf die entsprechende Domäne zu erzwingen, also sehr viel! –

+0

Eine Sache. Es funktioniert gut in allen Seiten, aber nicht in der Homepage umleiten, haben Sie eine Ahnung von dem, was kann das sein? –

+0

Ich brauche ein genaues Beispiel: Was geben Sie in die Adressleiste ein, und wo möchten Sie auf –

0

mod_rewrite verwendet regulären Ausdruck. $1 referes zu einer Gruppe, die „definiert“ im Spiel Teil (mit der Klammer und die . als „Spiel“ Operator) werden muss:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^ru(.*)$ http://www.example.ru/$1 [L,R=301] 
+0

Es funktioniert gut in der Homepage, wenn ich zu www.example.com/ru gehe, leitet es mich zu www.example.ru/ru weiter, aber wenn ich auf einer anderen Seite wie www.example.com/en/etwas bin es leitet mich zu www.example.ru//etwas (ohne den Sprachparameter) um. –