htaccess 301 重定向新基础域名的通配符

Posted

技术标签:

【中文标题】htaccess 301 重定向新基础域名的通配符【英文标题】:htaccess 301 Redirect Wildcard for New Base Domain Name 【发布时间】:2013-08-28 09:45:27 【问题描述】:

我为其进行 SEO 的公司已更改其域名。

我已经编写了 301 次重写以将流量重定向到新域。到目前为止,我已经重写了 3 个更改,其中有很多。等我全部做完的时候,大概有30次左右的重写,看起来有点傻!

是否有一个通配符可以用来确保满足以下 3 个参数?

    必须始终指向 www。版本。 必须始终指向 co.uk 版本。 必须始终将旧网址更改为新网址。

应该是这样的……

(.*)example-old(.*) = www.example-new.co.uk

(.*)example-old(.*)/(.*) = www.example-new.co.uk/directory

下面的代码解决了问题3,但并不能解决所有问题。

如果我可以使用一小段代码,它使用通配符,这将是完美的。

任何帮助,非常感谢!


# 301 --- http://example.co.uk => http://www.example-new.co.uk
RewriteCond %HTTP_HOST ^example\.co\.uk$
RewriteRule ^$ http://www.example-new.co.uk/? [L,R=301]

# 301 --- http://www.example.co.uk => http://www.example-new.co.uk
RewriteCond %HTTP_HOST ^www\.example\.co\.uk$
RewriteRule ^$ http://www.example-new.co.uk/? [L,R=301]

# 301 --- http://example.com => http://www.example-new.co.uk
RewriteCond %HTTP_HOST ^example\.com$
RewriteRule ^$ http://www.example-new.co.uk/? [L,R=301]

# 301 --- http://www.example.com => http://www.example-new.co.uk
RewriteCond %HTTP_HOST ^www\.example\.com$
RewriteRule ^$ http://www.example-new.co.uk/? [L,R=301]

【问题讨论】:

使用重写引擎是一种可笑的超强方式来做到这一点(而且更难)。查看以下问题的答案:***.com/questions/1100343/… 谢谢,看起来不错。但它去哪儿了?以及如何解决 .com 与 .co.uk 的问题? 该配置选项进入httpd.conf。您可以使用它将任何域重定向到任何其他域,它不仅限于 www 与非 www。 我对 Apache 很陌生。如何找到 httpd.conf 并进行编辑? 【参考方案1】:

假设您除了www 之外没有其他子域,如果您的.htaccess 文件与example-new.co.uk 的根目录不同,则您可以在相关域的根目录上设置此简单规则:

RewriteEngine On
# anything that is not equal to www.example-new.co.uk
RewriteCond %HTTP_HOST !^www\.example-new\.co\.uk$
# redirects to http://www.example-new.co.uk/anything
RewriteRule ^/?(.*)$ http://www.example-new.co.uk/$1 [R=301,L]

它将使用 URL 路径将任何不属于 www.example-new.co.uk 的内容重定向到新域。

所以,如果我访问:

http://example-new.co.uk/new-league <<< no wwww

我将被重定向到:

http://www.example-new.co.uk/new-league

如果我访问:

http://www.example-new.com/new-league <<< ends with .com
http://www.example-old.co.uk/new-league <<< domain is different
http://example-old.co.uk/new-league <<< domain is different

所以以上 3 个也将重定向到:

http://www.example-new.co.uk/new-league

【讨论】:

工作愉快。正如 Greg 所建议的那样,不确定 httpd.conf 对此有何优势。我想现在,我的下一步是研究如何将所有 404 重定向到不同的页面? @msfirth kindly check this answer as the right answer if it solves your issue, see here how. @msfirth 是否适合 404 取决于您想要做什么,您希望他们重定向到自定义 404 文件夹还是什么? 出于 SEO 目的,将 404 重写为新闻页面,可以防止您从 Google 获得差评。所以 404 到 /news 将是理想的解决方案! @msfirth 看到我上面的更新,如果指向的文件夹或文件不存在,它会重定向到/news 但是我不认为谷歌喜欢所有 404 都转到 301 上的同一页面,并且没有 404 警报。

以上是关于htaccess 301 重定向新基础域名的通配符的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 301将规则/ HTTP重定向到HTTPS /非www到www

伪静态网址301重定向到静态网址怎么实现

301 使用 .htaccess 重定向 URL 模式

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

htaccess 301 与重定向 404

如何使用 .htaccess 将域路径重定向到其他域路径?