@[TOC]
当用户或搜索引擎向服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中包含状态码301,以向用户表示该资源已经永久改变了位置。
301状态码通常在那些情况下使用
301状态码通常适合如下几个场景中去使用:
- 网站内容发生更改
如果网站中的页面被永久性地移动到其他位置,就可以使用301状态码来告诉搜索引擎,这个页面已经被永久地移动到其他位置。 - 网站域名更改
如果网站域名发生了更改,就可以使用301状态码来告诉搜索引擎,这个网站的域名已经更改。 - 网站重命名
如果网站中的某个页面被重命名,就可以使用301状态码来告诉搜索引擎,这个页面的URL已经更改。 - 网站删除
如果网站中的某个页面被删除,就可以使用301状态码来告诉搜索引擎,这个页面已经不存在了。 - 网站合并
如果两个或多个网站合并成一个新的网站,就可以使用301状态码来告诉搜索引擎,这些网站已经合并成一个新的网站。 - 其他
任何你想用户访问网站时,自动为用户导航到另外一个新的网站时,就可以合理配置301状态码来实现。
301永久重定向配置
Nginx配置301永久重定向
sudo vim /etc/nginx/nginx.conf
location ~ ^/old_url/(.*)$ {
return 301 $scheme://www.domainname.com/new_url/$1;
}
需要将old_url替换为您要重定向的旧页面的URL路径,将new_url替换为新页面的URL路径,并将www.domainname.com替换为您的域名。“ :wq!”保存并关闭文件。 并重新加载Nginx配置以使更改生效:
sudo service nginx reload
Windows配置IIS301永久重定向
- 在IIS里把网站正常发布,例如域名为www.aaa.com。
- 在硬盘上建一个空文件夹。
- 在IIS里建一个网站,例如域名为aaa.com,指向新建的空文件夹。
- 在网站的主页,选择“HTTP重定向”,具体参数设置如下:
- 勾选“将请求重定向到此目标”。
- 重定向地址:www.aaa.com$S$Q
- 勾选“将所有请求重定向到确切的目标(而不是相对于目标)”。
- 状态代码:永久(301)。
PHP下的301重定向
PHP重定向参考代码如下:<?php Header("HTTP/1.1 301 Moved Permanently"); Header("Location: http://www.domainname.com"); //跳转到带www的网址 ?>
Apache服务器实现301重定向
Apache服务器域名的重定向
通过VIM编辑器对配置文件进行配置:
sudo vim /etc/apache2/apache2.conf
config 配置修改参考代码如下:
<VirtualHost *:80>
ServerName domainname.com
ServerAlias www.domainname.com
RewriteEngine On
RewriteRule ^/old-path$ http://newdomainname.com/new-path [R=301,L]
</VirtualHost>
- ServerName 和 ServerAlias 应设置为您的域名。
- RewriteRule 行定义了重定向规则,其中 /old-path 是旧的URL路径,http://newdomainname.com/new-path 是新的目标URL。 [R=301,L] 部分指示执行永久重定向(301)并停止进一步的重写规则处理。
保存配置文件并重新加载Apache
保存配置文件,并重启apache2服务,使得配置生效。sudo systemctl reload apache2 # For Ubuntu/Debian
最后,验证您的301重定向是否按预期工作。您可以通过访问旧页面URL来检查是否已成功重定向到新页面。
301重定向是否违反相关法规?
301重定向是网站服务器之间的“通知”机制,而不是“访问”机制。它是一种HTTP协议的服务器端行为,是服务器告诉浏览器的一种方法,在服务器上做了某些事情之后,浏览器应该被重定向到新的URL。
根据《互联网信息服务管理办法》规定,国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。因此,网站主办者在申请网站许可或者备案之前,不得擅自从事互联网信息服务。
总之,301重定向不会违反互联网相关法规。