【问题标题】:.htaccess 301 redirect page specific + wildcard the rest.htaccess 301 重定向页面特定 + 通配符其余
【发布时间】:2020-05-12 15:07:03
【问题描述】:

我正在工作的站点已移至新域,具有完全不同的站点结构和文件命名。

我已经设置了一个 .htaccess 文件来将重要页面重定向到新域上的等效页面:

RewriteEngine On
Redirect 301 /oldpage1/ http://www.newdomain.org/newpage1
Redirect 301 /folder/oldpage2/ http://www.newdomain.org/newpage2
Redirect 301 /oldpage3/ http://www.newdomain.org/folder/another-newpage
...

...等等。

现在,我想捕获旧域下的所有其他 URL,并将它们定向到新站点的主页。所以像:

Redirect 301 /*/ http://www.newdomain.org

但这到底是怎么做到的呢?

感谢您的帮助!

【问题讨论】:

    标签: apache .htaccess redirect


    【解决方案1】:

    预先说明,Redirect 指令不需要RewriteEngine On,因为RewriteEnginemod_rewrite 的一部分,而Redirect 属于mod_alias。这是实现相似目标的两种不同方式。


    现在,只是为了回答这个问题,您可以使用 RedirectMatch 来回答这个问题

    RedirectMatch / http://www.newdomain.org
    

    这会将任何路径从旧域重定向到新域的主页。


    请注意,Redirect 指令使用“旧”网址作为前缀

    那么任何以 URL-path 开头的请求都会在目标 URL 的位置向客户端返回一个重定向请求。匹配的 URL 路径之外的其他路径信息将附加到目标 URL。

    这意味着

    Redirect /oldpage1/ http://www.newdomain.org/newpage1
    

    将重定向所有以/oldpage1/ 开头的 URL,而不仅仅是oldpage1


    最后,永远不要301测试!

    【讨论】:

    • 他们不想保留路径,而是将所有“其他” URL 重定向到新域的根目录,因此这需要 RewriteRule。
    • @CBroe 谢谢,我错过了。
    猜你喜欢
    • 2017-09-09
    • 2015-11-04
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多