【问题标题】:Removing country domain name using mod_rewrite使用 mod_rewrite 删除国家域名
【发布时间】:2011-05-11 21:39:27
【问题描述】:

我购买了国际域名 (.com) 和巴西域名 (.com.br)。我需要将人们从巴西域重定向到国际域,以便 thewebsite.com.br/contact 转到 thewebsite.com/contact。最重要的是,我还想从巴西和国际域名中删除 www。这样 www.thewebsite.com.br/contact 会将我的用户带到 thewebsite.com/contact。

我正在使用 Drupal .htaccess 重写规则来删除 www:

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

你有什么推荐的?调整此规则以删除国际 .br 或在此基础上添加另一条规则以删除 .br?从我的 URL 中删除 www 和 .br 的最终 mod_rewrite 条件如何?

【问题讨论】:

    标签: url mod-rewrite url-rewriting


    【解决方案1】:

    这应该可行。

    <IfModule mod_rewrite.c>
    # Enable rewrite
    RewriteEngine On
    RewriteBase /
    # Rewrite .br to international domain
    RewriteCond %{HTTP_HOST} ^www.domain.com.br [NC]
    RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
    # Rewrite non www. .br to international domain
    RewriteCond %{HTTP_HOST} ^domain.com.br [NC]
    RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
    # Rewrite www. to non www.
    RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
    RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
    </IfModule>
    

    【讨论】:

    • 谢谢。唯一的问题是此代码不会将 domain.com.br 重定向到 domain.com,因为它不会搜索没有 .www 的 domain.com.br。我可以添加第三条规则来处理没有 .www 的 .com.br。或者这是一个不好的做法?有没有办法用一条规则解决所有这些问题?
    • 对不起,你是对的,我已经编辑了原始文件以包含非 www .br 到。使用多个规则来实现就可以了。
    • 如果您需要每一盎司的性能,您应该将任何 htaccess 规则移至 httpd.conf 并禁用 htaccess 文件,这将为您的每次页面加载提供提升。
    猜你喜欢
    • 2012-07-15
    • 2010-10-15
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多