我如何 .htaccess 301 将所有页面/文件(除了一个)重定向到新域?

Posted

技术标签:

【中文标题】我如何 .htaccess 301 将所有页面/文件(除了一个)重定向到新域?【英文标题】:How can I .htaccess 301 redirect all pages/files (except for one) to new domain? 【发布时间】:2015-09-03 21:00:12 【问题描述】:

我已经创建了一个 .htaccess 文件,它成功地将旧域 (www.olddomain.com) 上的大多数不同页面和文件重定向到我的新域 (www.newdomain.com)。

但是,我需要一个页面不被重定向到新站点,该页面是 Google 验证 .html 文件:

http://www.olddomain.com/googleverification.html

我已附上粘贴在下面的文件 (.htaccess) 的最相关部分:

RewriteEngine On

RewriteCond %HTTP_HOST ^olddomain.com$ [OR]
RewriteCond %HTTP_HOST ^www.olddomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

RewriteCond %REQUEST_URI  !.(php|html?|jpg|gif|png|pdf|tiff|bmp|ico|gz|zip|xml|txt)$
RewriteRule ^(.*)([^/])$ http://www.newdomain.com/$1$2/ [L,R=301]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

【问题讨论】:

【参考方案1】:

保持你的第一条规则为:

RewriteEngine On

RewriteCond %HTTP_HOST ^(www\.)?olddomain\.com$ [NC]
RewriteCond %THE_REQUEST !/googleverification\.html [NC]
RewriteRule ^ http://www.newdomain.com%REQUEST_URI [L,R=301,NE]

【讨论】:

我尝试了代码,但尝试访问 olddomain.com/googleverification.html 重定向到 newdomain.com/googleverification.html 我想要做的是将 olddomain.com 重定向到 newdomain.com 但没有重定向olddomain.com/googleverification.html 它无法将/googleverification.html 重定向到新域。确保这是第一条规则,并在清除浏览器缓存后进行测试。 它现在可以工作了,在我删除了我的第一条规则后,我的前 3 行代码。 我确实在所有其他代码的顶部添加了您的代码,但我猜它与我现有的代码冲突。删除我上面现有代码的前 3 行解决了这个问题。谢谢。 对了,NE标志是干什么用的?【参考方案2】:

我一直在不同的论坛上问同样的问题,另一种解决方案也有效。

我只是想在这里也分享一下。

RewriteCond HTTP_HOST !^www.newdomain.com$
RewriteCond %REQUEST_URI !^/googleverification.html
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

【讨论】:

以上是关于我如何 .htaccess 301 将所有页面/文件(除了一个)重定向到新域?的主要内容,如果未能解决你的问题,请参考以下文章

301 使用 .htaccess 从旧域重定向到新域

htaccess 301 与重定向 404

HTACCESS-将所有页面重定向到一个页面

使用 htaccess 重定向整个站点

如何使用 .htaccess 正确地将 HTTP 301 重定向到 HTTPS?

使用 .htaccess 进行大规模 301 重定向