仅针对域的 Htaccess 301 重定向

Posted

技术标签:

【中文标题】仅针对域的 Htaccess 301 重定向【英文标题】:Htaccess 301 redirect for domain only 【发布时间】:2012-05-24 00:44:33 【问题描述】:

我在 htaccess 中有一个这样的 301 重定向列表:

Redirect 301 /oldpage1.php http://www.domain.com/newpage1.php
Redirect 301 /oldpage2.php http://www.domain.com/newpage2.php
Redirect 301 /oldpage3.php http://www.domain.com/newpage3.php
...

现在这些页面应该只重定向到某个域(现在还有其他域指向相同的位置,例如 www.domain.com)。

例如www.domain.com/oldpage1.php 应被重定向,但 www.sub.domain.com/oldpage1.php 不会。

那么仅对 www.domain.com 应用这些重定向的方法是什么?

谢谢。

【问题讨论】:

为此使用 mod_rewrite 的 RewriteRuleRewriteCond %HTTP_HOST ^www\.domain\.com$ 【参考方案1】:

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %HTTP_HOST ^(www\.)?domain\.com$
RewriteRule ^oldpage1\.php/?$ newpage1.php [L,R=301]

RewriteCond %HTTP_HOST ^(www\.)?domain\.com$
RewriteRule ^oldpage2\.php/?$ newpage2.php [L,R=301]

RewriteCond %HTTP_HOST ^(www\.)?domain\.com$
RewriteRule ^oldpage3\.php/?$ newpage3.php [L,R=301]

PS:如果你有几个类似上面的规则,那么最好使用RewriteMap。

【讨论】:

以上是关于仅针对域的 Htaccess 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章

301 重定向 - 根文件夹和子文件夹的不同位置

301 使用 .htaccess 重定向 URL 模式

Htaccess 301 重定向只是重定向域而不是页面

301 重定向.htaccess

.htaccess 中的 301 重定向

.htaccess 301 重定向,保留路径