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

时间:2019-04-06 08:16:33

标签: .htaccess redirect http-status-code-301

我有一个域,我想使用htaccess上的301重定向重定向到“新域”;我成功地做到了,但是现在的问题是,我想将旧域的页面/文件夹重定向到新域的各个位置。例如

www.olddomain.com重定向到www.newdomain.com(有效) www.olddomain.com/about应该重定向到www.newdomain.com/who-we-are(无效)

我尝试在htaccess上重定向301 oldurl newurl,但由于root已经重定向到新域,因此无法正常工作。

有什么办法解决这个问题?

3 个答案:

答案 0 :(得分:0)

当然,您的要求是可能的。如果事情不适合您,则很可能您的规则顺序有问题。您需要记住,规则是从上到下处理的。因此,必须首先使用更专业,更详细的规则,而更通用的规则则要更进一步。

以下是您提供的单个示例的示例:

RewriteEngine on

# this is a specialized rule for a specific resource
RewriteCond %{HTTP_HOST} ^olddomain\.com$
RewriteRule ^/about/?$ https://newdomain.com/who-we-are [R=301]

# this acts as a fallback for a  request not yet redirected
RewriteCond %{HTTP_HOST} ^olddomain\.com$
RewriteRule ^/?$ https://newdomain.com/ [R=301]

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

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

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

答案 1 :(得分:0)

您可以使用此:

RewriteEngine on

#redirect specific pages to specific location on new domain
RewriteCond %{HTTP_HOST} ^(www\.)?oldDomain\.com$ [NC]
RewriteRule ^/?about/?$ http://newDomain.com/who-we-are [NC,L,R=301]
#redirect the old domain root to new domain
RewriteCond %{HTTP_HOST} ^(www\.)?oldDomain\.com$ [NC]
RewriteRule ^/?$ http://newDomain.com/$1 [NC,L,R=301]

如果您的域(旧域和新域)位于不同的服务器上,或指向同一服务器上的另一个文档根,则可以在上述两个规则中删除%{HTTP_HOST}条件。

答案 2 :(得分:0)

谢谢大家,问题已解决。

    RewriteEngine on
    RewriteCond %{HTTP_HOST} hitechos\.com [NC]
    RewriteCond %{REQUEST_URI} ^/$
    Rewriterule ^(.*)$ https://www.hitechdigital.com/ [L,R=301]

问候 Manoj Soni