301转向汇总:永久性,临时性以及设置SSL后的https跳转

ian发布

平时做SEO遇到301转向的时候,总找不到相关的信息,这里从网上收集放在文章里,到用到时候可以很快找到。

1、IIS下301设置

Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。

2、ASP下的301转向代码

<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.jarfee.cn/301-zhuanxiang.html”
%>

3、ASP.Net下的301转向代码

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://www.jarfee.cn/301-zhuanxiang.html“);
}
</script>

4、PHP下的301转向代码

header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: http://www.jarfee.cn/301-zhuanxiang.html”);
exit();

5、CGI Perl下的301转向代码

$q = new CGI;
print $q->redirect(”http://www.jarfee.cn/”);

6、JSP下的301转向代码

<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.jarfee.cn/” );
response.setHeader( “Connection”, “close” );
%>

7、Apache下301转向代码

新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^jarfee.cn [NC]
RewriteRule ^(.*)$ http://www.jarfee.cn/$1 [L,R=301]

2)重定向到新域名

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.jarfee.cn/$1 [L,R=301]

3)使用正则进行301转向,实现伪静态

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html

8、Apache下vhosts.conf中配置301转向

为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:

<VirtualHost *:80>
ServerName www.jarfee.cn
DocumentRoot /home/jarfee
</VirtualHost>

<VirtualHost *:80>
ServerName jarfee.cn
RedirectMatch permanent ^/(.*) http://www.jarfee.cn/$1
</VirtualHost>

Apache下除了以上2种方法,还有其他配置方法和可选参数,建议阅读Apache文档。

9、设置SSL后,http跳转到HTTPS

现在越来越多的网站设置了安全证书SSL,相应的网站URL也有HTTP换成HTTS。

那如何将HTTP批量跳转到HTTPS呢?

使用.htaccess来完成:

在.htaccess里,追加下面几行代码:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

设置完后,记得测试下,避免文件保存异常造成网站不能访问。

10、使用WordPress系统,做域名跳转时:

如果从一个老域名跳转到新域名时,需要至少写两条,这个时候如果还按照那下面这种写法,就会出现其中带www的老域名不能跳转的情况:

RewriteCond %{HTTP_HOST} ^oldjarfee.cn [NC]
RewriteCond %{HTTP_HOST} ^www.oldjarfee.cn [NC]
RewriteRule ^(.*)$ http://www.jarfee.cn/$1 [L,R=301]

上面这样的写法,www.oldjarfee.cn是不能跳转的,为什么呢?Google了一下才知道,问题出现在后面那个[NC] ,第一个修改成[OR],就没有问题了:

RewriteCond %{HTTP_HOST} ^oldjarfee.cn [OR]
RewriteCond %{HTTP_HOST} ^www.oldjarfee.cn [NC]
RewriteRule ^(.*)$ http://www.jarfee.cn/$1 [L,R=301]

如果是wordpress博客跳转,要加到原来的.htaccess内容的前面,最终效果是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^oldjarfee.cn [OR]
RewriteCond %{HTTP_HOST} ^www.oldjarfee.cn [NC]
RewriteRule ^(.*)$ http://www.jarfee.cn/$1 [L,R=301]

RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

需要转载或者使用的朋友们,记得把 jarfee.cn 换成你自己的域名。

301转向情况检测

1. https://httpstatus.io/ ——可以检测到HTTP响应代码和跳转情况,支持批量查询。
2. https://monitorbacklinks.com/seo-tools/http-header-status-check —— 除了可以查询响应代码外,还能把HTTP响应的信息列出来,方便查看。

分类: History

发表评论

电子邮件地址不会被公开。 必填项已用*标注