代码之家  ›  专栏  ›  技术社区  ›  hplbsh

.htaccess 301重定向路径和所有子路径

  •  1
  • hplbsh  · 技术社区  · 14 年前

    我希望访问www.thisdomain.com/docs/path1/path2重定向到www.thatdomain.com/path1/path2

    (注意,文档不是新路径的一部分)

    我在www.thisdomain.com上有以下信息:

    RewriteEngine on
    
    RewriteRule ^docs/* http://www.domain.com/ [R=301,L]    
    

    如果我访问www.thisdomain.com/docs,它将指向www.thatdomain.com,但如果我访问子路径(如www.thisdomain.com/docs/path1/path2),它将失败。重定向是否可以拦截子路径访问并根据需要重定向?如果是的话,有什么线索吗?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Chris Morgan    14 年前

    对于正则表达式,*表示任意数字 前一个原子的 ,它将匹配/docs和/docs/。试试这个:

    RewriteEngine on
    RewriteRule ^docs$ http://www.domain.com/ [R=301,L,QSA]
    RewriteRule ^docs/(.*) http://www.domain.com/$1 [R=301,L,QSA]
    

    ( QSA 是查询字符串追加,所以 /docs/foo?bar=baz 不会失去 ?bar=baz .)

        2
  •  2
  •   bitoolean    11 年前

    根据的“使用htaccess重定向将旧域重定向到新域”部分 the first Google result 我在搜索“htaccess redirect”(不带双引号)时发现,这段代码就足够了:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
    

    根据他们对该技术的描述,它将按照您的意愿以递归方式(包括任何子路径)重定向.htaccess文件所在的目录。当然,mod_rewrite需要存在才能使rewrite指令工作。