【问题标题】:RewriteCond for a folder only on a specific domain extension仅在特定域扩展上的文件夹的 RewriteCond
【发布时间】:2016-02-19 12:35:10
【问题描述】:

我有一个可以通过 3 个域(domain.com、domain.ch、domain.fr)访问的站点。不过,这三个使用完全相同的文件和文件夹。

关于.fr 域(以及此域),我需要以下内容:

  1. domain.fr(根)重定向到domain.com/fr/france

这是通过以下规则实现的:

RewriteCond %{HTTP_HOST} ^www\.domain\.fr$
RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/fr\/france" [R=301,L]

它有效。 (还有一个有效的规则可以强制在每个 URL 前面加上 www.。)

不能去工作的是:

  1. domain.fr/fr 也重定向到domain.com/fr/france

  2. 最后,将任何 URL domain.fr/fr/* 重定向到 domain.com/fr/*
    (保留 * 代表的任何内容)。

诀窍(对我而言)是相同的 .htaccess 文件也将出现在 domain.com 和 domain.ch 上,但这些规则不得为这些域激活。

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    你可以把这些规则放在你的htaccess中

    # Redirect [www.]domain.fr and [www.]domain.fr/fr to www.domain.com/fr/france
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.fr$ [NC]
    RewriteRule ^(|fr)$ http://www.domain.com/fr/france [R=301,L]
    
    # Redirect domain.fr/fr/* to domain.com/fr/*
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.fr$ [NC]
    RewriteRule ^fr/(.*)$ http://www.domain.com/fr/$1 [R=301,L]
    

    【讨论】:

    • 完美。非常感谢!
    【解决方案2】:

    试试:

    RewriteCond %{HTTP_HOST} ^www\.domain\.fr$
    RewriteCond %{REQUEST_URI} !^/fr/france
    RewriteRule ^fr/(.*)$ http://www.domain.com/fr/france/$1 [R=301,L]
    

    【讨论】:

    • 恐怕不行。不用担心,另一个答案可以解决问题。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 2018-03-08
    • 2011-03-10
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    相关资源
    最近更新 更多