本文关键词:在服务器网站上做跳转页面跳转
很多刚入手服务器的兄弟,遇到域名解析没问题,但访问直接报错或者显示默认页,心里肯定慌。
其实大部分情况不是服务器坏了,而是你没做对跳转,或者配置文件写错了。
这篇不整虚的,直接告诉你怎么在服务器端把访问重定向到新链接,或者把裸域跳www,或者把http跳https。
别去网上抄那些复杂的代码,容易出bug,咱们用Nginx和Apache这两种最主流的配置来说事。
先说Nginx,这是目前用得最多的,因为快且稳。
你在宝塔面板或者直接用SSH连上去,找到网站配置文件。
通常是在 /etc/nginx/conf.d/ 或者 sites-available 目录下。
打开对应的 .conf 文件,你会看到 server 块。
如果你想做301永久跳转,代码其实就几行。
比如你想把 old.com 跳转到 new.com。
在 server 块里加这么一段:
return 301 https://new.com$request_uri;
注意,这里一定要写全,包括https和$request_uri。
很多人只写域名,结果子页面全丢了,变成首页,这就尴尬了。
还有,别忘记加 server_name old.com;
不然Nginx不知道这个跳转是针对哪个域名的。
改完配置,千万别直接重启,先测试一下语法。
输入 nginx -t
如果显示 syntax is ok,再 reload 或者 restart。
这一步很关键,很多人跳过,结果服务器直接挂,连后台都进不去,修起来麻烦得要死。
再说说Apache用户,虽然少了点,但也不少。
Apache主要靠 .htaccess 文件或者 httpd.conf。
如果你用的是虚拟主机,通常有权限编辑 .htaccess。
在里面加这么几行:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old.com [NC]
RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]
这里有个坑,NC是不区分大小写,L是最后一条规则。
很多新手忘记写 L,导致规则循环或者不生效。
还有,RewriteCond 里的域名,别加 http://,只写域名本身。
如果你是在服务器全局配置里改,那就得动 httpd.conf 或者 apache2.conf。
这时候权限要求高,一般不建议小白动全局,容易把整个服务器搞崩。
还有一种情况,是https证书没配好,导致跳转失败。
这时候浏览器会报红,用户根本进不去。
所以在做跳转前,先确保你的SSL证书是有效的,且绑定正确。
有时候你做了跳转,但用户还是能访问http,这是因为你没强制跳转。
在Nginx里,可以加一个 server 块专门监听80端口,然后 return 301 https://...
这样所有http请求都会被强制转成https,安全又规范。
这里提一嘴,301和302的区别。
301是永久跳转,权重会传递,搜索引擎喜欢。
302是临时跳转,权重不传递。
如果你是要换域名,或者改版网站,一定要用301。
别图省事用302,不然SEO权重全散,排名掉得你怀疑人生。
另外,跳转后的页面,最好做个简单的提示,告诉用户“正在跳转”,虽然技术上是瞬间的,但用户心理需要个缓冲。
当然,这主要是前端的事,服务器端只管头。
最后,测试跳转是否成功,别光靠肉眼。
用 curl -I http://old.com 命令,看返回头里有没有 Location: https://new.com。
如果有,且状态码是301,那就成了。
如果返回200,说明没跳转,或者跳转配置没生效。
这时候检查配置文件语法,检查权限,检查SELinux(如果是CentOS)。
SELinux经常拦着Nginx,导致配置改了不生效,这是个大坑。
临时可以 setenforce 0 测试一下,如果是这个问题,记得永久关闭或者配置策略。
总之,在服务器网站上做跳转页面跳转,看似简单,细节全是坑。
配置文件写错一个符号,整个网站就废了。
所以备份!备份!备份!
改配置前,把原来的文件拷一份出来。
万一搞砸了,还能一键还原,不至于手忙脚乱。
希望这些经验能帮你少踩点坑,毕竟服务器这东西,稳定第一,花哨第二。
有问题多查官方文档,别轻信那些过时的教程,版本不同,配置语法可能都不一样。
做好这些,你的跳转就能稳稳当当,用户和搜索引擎都挑不出毛病。