我有一个域,我想在htaccess上使用301重定向重定向到New Domain;我成功地做到了但现在问题是,我想将旧域的页面/文件夹重定向到新域的各个位置。例如。
www.olddomain.com重定向至www.newdomain.com(作品)www.olddomain.com/about应重定向至www.newdomain.com/who-we-are(不起作用)
我尝试在我的htaccess上重定向301 oldurl newurl,但它不能正常工作,已经重定向到新域。
有什么方法可以解决这个问题吗?
当然你提出的问题是可能的。如果事情不适合您,则很可能您的规则顺序存在问题。您需要记住,规则是从上到下处理的。因此,更专业,更详细的规则必须先行,更一般的规则要进一步降低。
以下是您给出的单个示例的示例:
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服务器主机配置(读取:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。
你可以用这个:
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}
条件。
谢谢大家,问题解决了。
RewriteEngine on
RewriteCond %{HTTP_HOST} hitechos\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ https://www.hitechdigital.com/ [L,R=301]
关心Manoj Soni