301将整个域重定向到新域上的相应URL - EXCEPT用于一个目录

时间:2014-11-12 22:28:44

标签: apache .htaccess mod-rewrite redirect

正如标题所说,我正在将网站从olddomain.com迁移到newdomain.com。我目前在olddomain.com的网络根目录中有一个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等),以便任何对olddomain.com上的网址的请求会被重定向到newdomain.com上的相应网址,但对olddomain.com/download内的文件或目录的任何请求除外。

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

1 个答案:

答案 0 :(得分:1)

您可以在RewriteRule中使用此否定条件:

RewriteEngine On

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