我如何 .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 将所有页面/文件(除了一个)重定向到新域?的主要内容,如果未能解决你的问题,请参考以下文章