【问题标题】:301 redirect entire domain to corresponding URL on new domain - EXCEPT for one directory301 将整个域重定向到新域上的相应 URL - 一个目录除外
【发布时间】:2015-01-09 22:47:47
【问题描述】:

正如标题所说,我正在将一个网站从olddomain.com 迁移到newdomain.com。我目前在olddomain.com 的Web 根目录中有一个htaccess 301 重定向,如下所示,它将对olddomain.com/any/url 的任何请求重定向到newdomain.com 上相同的相应网址:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

我的问题是,如何修改此重写规则以排除一个特定目录? olddomain.com/downloads 将继续充当文件镜像,因此我需要从原始站点范围的 301 重定向中排除 olddomain.com/downloads(及其所有子目录,例如 /releases 等),以便对 @ 上的 URL 的任何请求987654330@ 被重定向到 newdomain.com 上的相应 URL,但对位于 olddomain.com/download 内的文件或目录的任何请求除外。

编辑如下面的 cmets 所述,我还需要从重定向中排除 olddomain.com/getlatest.php,因为它会生成依赖于解析服务器目录结构的下载链接。

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    你可以在RewriteRule中使用这个否定条件:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !newdomain\.com$ [NC]
    RewriteRule !^(downloads(/.*)?|getlatest\.php)$ http://newdomain.com%{REQUEST_URI} [L,R=301,NE,NC]
    

    【讨论】:

    • 谢谢,这行得通!还有一个问题:我怎样才能以同样的方式排除 olddomain.com/getlatest.php? (这是一个 PHP 脚本,它会生成最新版本的下载链接,并且不能从 newdomain.com 工作,因为它会解析 olddomain.com 目录结构以生成链接)
    • (如果你能帮我解决最后一点,我会将此标记为答案)
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 2021-09-07
    • 2013-09-24
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多