概述
由于之前使用www.lkxin.cn作为博客的主域名,但现在更换为blog.lkxin.cn,所以原来的搜索引擎收录的好多链接都还指向旧域名。影响SEO的同时,也很影响访问效果。
下面分享给大家的方法不同于301和302跳转,例如博主最开始设置了403、404统一跳转到blog.lkxin.cn,但是这样仅仅是实现了原来所有链接访问转向新域名首页。
进过一番查找和询问,最终找到了两种解决方法。
方法一:通过JS实现
一般不推荐使用JS进行重定向,但是JS实用性高不拘泥平台限制而且操作也不难,考虑一些情况比较特殊所以可能比较适用,于是还是在此分享,当然建议最好是使用服务器服务进行301永久重定向,比如使用Apache的用户请参阅Apache .htaccess教程和Apache网址重写指南。(如果不清楚自己服务器配置可以咨询服务器供应商,当然如果觉得麻烦可以使用这里分享的JS重定向。)
这段JS重定向的代码可以帮你将你站点所有旧地址跳转到新域名对应的地址,例如http://www.lkxin.cn和他的子目录http://www.lkxin.cn/about.html及其他所有页面指向到https://blog.lkxin.cn对应页面,跳转后http://www.lkxin.cn指向到https://blog.lkxin.cn,而http://blog.lkxin.cn/about.html将指向到https://blog.lkxin.cn/about.html页面,完全无缝隙跳转只要在需跳转的域名放置代码和配置好域名即可,如果这段重定向JS放在页面头部那么会在加载时就执行跳转,如果放在页面底部那么可能是页面加载的差不多的时候执行跳转(这样会有些不友好,当整个页面都加载好了突然闪一下,虽然页面内容没有变只变了地址栏的地址。)(我这边使用的是404跳转页面,所以加入JS毫无违和感)
JS重定向代码:
if (document.domain =="www.lkxin.cn")
this.location = "https://blog.lkxin.cn" + this.location.pathname + this.location.search;
多个域名跳转到指定域名:
if (document.domain =="www.lkxin.cn" || document.domain =="qjblog.top" )
this.location = "https://blog.lkxin.cn" + this.location.pathname + this.location.search;
优化版:多个域名跳转到指定域名:
if (document.domain !="blog.lkxin.cn")
this.location = "https://blog.lkxin.cn" + this.location.pathname + this.location.search;
这两个的区别在于:第一个只能识别所指定的几个域名进行跳转,第二个会判断访问当前页面只要域名不是blog.lkxin.cn都会自动跳转到blog.lkxin.cn。
方法二:nginx rewrite 实现URL跳转
URL跳转
这里说的URL跳转就是用户在访问一个URL时将其跳转到另一个URL上。
常见的应用场景是让多个域名跳转到同一个URL上,(例如让旧域名跳转到新域名上)
将静态文件请求跳转到cdn上等
根据用户设备跳转到不同站点(pc版,wap版)等。
URL跳转可以通过js在页面上设置的window.location实现
也可以通过php设置header来实现
当然也可以用nginx 的 rewrite功能实现
nginx rewrite模块
rewrite 是 nginx的静态重写模块
基本用法是 rewrite patten replace flag
patten是正则表达式,与patten匹配的URL会被改写为replace,flag可选
例如将旧域名跳转到新域名上server
{
listen 80;
server_name www.old.com;
rewrite ".*" http://www.new.com;
}
跳转到新域名上时保留路径server
{
listen 80;
server_name www.old.com;
rewrite "^/(.*)$" http://www.new.com/$1;
}
rewrite与location配合实现图片文件跳转到cdnlocation ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
rewrite "^/uploadfile/(.*)$" http://static.XXX.com/uploadfile/$1;
}
rewrite 后面可以加flag,flag标记有:
last 相当于Apache里的[L]标记,表示完成rewrite
break 终止匹配, 不再匹配后面的规则
redirect 返回302临时重定向 地址栏会显示跳转后的地址
permanent 返回301永久重定向 地址栏会显示跳转后的地址
博主使用的是方法一,应为情况比较特殊,第二种方法比较适用于将www.a.com的所有链接都直接跳转至www.b.com,包括首页,所以适合更换新旧域名的小伙伴用,而博主是由一级域名转二级域名,原域名www.lkxin.cn还有用,所以用JS跳转至blog.lkxin.cn。所以大家根据自己的情况而定吧!大部分都在用第二种方法。
赞 0
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://blog.lkxin.cn/archives/441.html
最后
以上就是大力麦片为你收集整理的php 获取rewite 前域名,通过JS或者NGINX的rewrite命令实现旧域名跳转新域名且URL路径不变...的全部内容,希望文章能够帮你解决php 获取rewite 前域名,通过JS或者NGINX的rewrite命令实现旧域名跳转新域名且URL路径不变...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复