2010-01-12 5 views
0

J'essaie de trouver le code mod_rewrite correct pour le cas suivant:mod_rewrite sur la racine de domaine

domain.de => www.domain.com/de/ 
domain.de/... => www.domain.com/... 
www.domain.de => www.domain.com/de/ 
www.domain.de/... => www.domain.com/... 

domain.com => www.domain.com/en/ 
domain.com/... => www.domain.com/... 
www.domain.com => www.domain.com/en/ 
www.domain.com/... => www.domain.com/... 

donc en gros

  1. tous les domaines non-www devrait être redirigé vers www.
  2. tout fin de l'uri sur .de ou .de/devrait être redirigé vers www.domain. com/de/
  3. mais si quelqu'un entre dans quelque chose après la .de/qui devrait être simplement annexée à www.domain.com/...

Quelqu'un peut-il penser à une solution intelligente pour cela? Je me bats avec {REQUEST_URI} et {} REQUEST_FILENAME à essayer de comprendre si l'URI demandé se termine ou .de .de/mais n'a pas pu trouver une solution de travail ...

Répondre

1

Essayez ceci:

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

salut gombo, merci! c'est exactement ce que je cherchais. pouvez-vous me dire quelle est la différence entre^$ et. dans la réécriture est? – Frank

+0

'^ $' correspond juste au chemin de l'URL '/' tandis que '.' correspond à tout autre chose ('/'plus plus). Cela est dû au fait que lorsque mod_rewrite est utilisé dans un fichier .htaccess, le préfixe de chemin par répertoire est supprimé avant le test et ajouté après l'application d'une règle. Et le préfixe de chemin du répertoire racine est '/'. – Gumbo

Questions connexes