2010-01-12 3 views
0

Я пытаюсь найти правильный код mod_rewrite для следующего случая:mod_rewrite на корневой домен

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/... 

поэтому в основном

  1. все не-WWW домены должны перенаправить на WWW.
  2. все окончание uri на .de или .de/должны быть перенаправлены на www.domain. ком/де/
  3. , но если кто-то вводит что-то после .de /, которые должны быть просто добавлены к www.domain.com/...

Может кто-нибудь придумать умное решение для этого? Я боролся с {REQUEST_URI} и {} REQUEST_FILENAME пытается выяснить, если запрошенный URI заканчивается .de или .de /, но не смогли найти рабочее решение ...

ответ

1

Попробуйте это:

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

привет гумбо, спасибо! это именно то, что я искал. можете ли вы сказать мне, какая разница между^$ и. в переписывающей? – Frank

+0

'^ $' соответствует только URL-адресу '/' while '.' соответствует любому другому ('/'plus more). Это связано с тем, что, когда mod_rewrite используется в файле .htaccess, префикс пути для каждого каталога удаляется перед тестированием и добавляется после применения правила. И префикс пути корневого каталога - '/'. – Gumbo

Смежные вопросы