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

问题描述 投票:0回答:3

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

www.olddomain.com重定向至www.newdomain.com(作品)www.olddomain.com/about应重定向至www.newdomain.com/who-we-are(不起作用)

我尝试在我的htaccess上重定向301 oldurl newurl,但它不能正常工作,已经重定向到新域。

有什么方法可以解决这个问题吗?

.htaccess redirect http-status-code-301
3个回答
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服务器主机配置(读取:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。


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}条件。


0
投票

谢谢大家,问题解决了。

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

关心Manoj Soni

© www.soinside.com 2019 - 2024. All rights reserved.