使用htaccess将URL重定向到新域

时间:2019-10-18 06:11:45

标签: wordpress apache .htaccess redirect

我想将旧站点上的一些URL重定向到新站点上的特定目标,并将其余URL重定向到主页。到目前为止,我已经尝试了以下方法:

  1. 对于需要转到新网站上特定页面的所有链接,请使用重定向301 /永久链接https://newsite.com/permalink1/
  2. 对于其他情况,我添加了一条通用规则

    RewriteCond %{HTTP_HOST} ^oldsite\.com$ [NC]
    RewriteRule ^(.*)$ https://newsite.com [R=301,L]
    

但是这会将所有页面重定向到新站点的主页。

然后我尝试用RedirectMatch替换上面的第2点

RedirectMatch 301 .* https://newsite.com

,但这会尝试在新网站上找到完全匹配的内容。 oldsite.com/xyz转到https://newsite.com/xyz

此外,某些旧站点URL具有参数,oldsite.com/a=?b=123如何将这些参数重定向到新站点首页。

2 个答案:

答案 0 :(得分:0)

尝试这个。希望会对您有帮助。

RewriteEngine on 
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

答案 1 :(得分:0)

这可能是一种简单的方法:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^oldsite\.com$
RewriteRule ^/?permalink1old(/.*)$ https://newsite.com/permalink1new$1 [R=301,QSA]

RewriteCond %{HTTP_HOST} ^oldsite\.com$
RewriteRule ^/?permalink2old(/.*)$ https://newsite.com/permalink2new$1 [R=301,QSA]

RewriteCond %{HTTP_HOST} ^oldsite\.com$
RewriteRule ^ https://newsite.com/ [R=301]

因此,您将旧主机名上的旧永久链接重定向到新主机名上的新永久链接,并在初始旧永久链接的路径中附加任何可能跟随的内容,并附加查询字符串以保留参数。

如果永久链接的路径中从未包含任何其他内容,那么您可以简化这些重定向,显然:

RewriteCond %{HTTP_HOST} ^oldsite\.com$
RewriteRule ^/?permalink1old/?$ https://newsite.com/permalink1new [R=301,QSA]

一个好主意是从302临时重定向开始,然后在确定一切正确设置之后,才将其更改为301永久重定向。这样可以防止在尝试时缓存问题...

此实现将在http服务器主机配置或动态配置文件(“ .htaccess”文件)中同样起作用。显然,重写模块需要加载到http服务器内部并在http主机中启用。如果使用动态配置文件,则需要注意在主机配置中完全启用了它的解释,并且该解释位于主机的DOCUMENT_ROOT文件夹中。

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。