2010-01-12 68 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. 所有以.de或.de /结尾的URI都应该重定向到www.domain。 COM /德/
  3. ,但如果有人在后由Matchi.com提供回到输入了一些/应该被简单地附加到www.domain.com/...

谁能想到这个聪明的解决方案?我一直在努力与{REQUEST_URI}和{} REQUEST_FILENAME试图找出如果请求的URI上.de或结束由Matchi.com提供回到/,但无法找到一个有效的解决方案......

回答

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 2010-01-13 09:44:23

+0

'^ $'只匹配URL路径'/',而'.'匹配其他任何内容('/'加上更多)。这是因为在.htaccess文件中使用mod_rewrite时,每个目录路径前缀在测试之前被删除,并在应用规则之后被附加。并且根目录的路径前缀是'/'。 – Gumbo 2010-01-13 09:52:30