【问题标题】:mod_rewrite on domain root域根目录上的 mod_rewrite
【发布时间】:2010-01-12 23:25:00
【问题描述】:

我正在尝试为以下情况找到正确的 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/de/
  3. 但是如果有人在 .de/ 之后输入了一些内容,则应该简单地将其附加到 www.domain.com/...

谁能想到一个聪明的解决方案?我一直在努力解决 {REQUEST_URI} 和 {REQUEST_FILENAME} 试图确定请求的 URI 是否以 .de 或 .de/ 结尾,但找不到有效的解决方案...

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案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]
    

    【讨论】:

    • 嗨秋葵,谢谢!这正是我想要的。你能告诉我 ^$ 和 .在改写是?
    • ^$ 仅匹配 URL 路径 /. 匹配其他任何内容(/ 以及更多)。这是因为当在 .htaccess 文件中使用 mod_rewrite 时,每个目录的路径前缀在测试之前被删除,并在应用规则后附加。并且根目录的路径前缀是/
    【解决方案2】:

    在此处查看一些示例: http://www.thesitewizard.com/apache/redirect-domain-www-subdomain.shtml

    这里: http://howto.kryl.info/mod_rewrite/

    开始:

    RewriteCond %{HTTP_HOST} ^domain.de$ [NC]

    重写规则 ^(.*)$ http://www.domain.com/de/$1 [R=301,L]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      相关资源
      最近更新 更多