广告位 后台主题配置管理 |
广告位 后台主题配置管理 |
本篇文章给大家谈谈301307服务器重定向,以及302永久重定向对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
在服务器里设置。 IIS中实现301转向:1.打开internet信息服务管理器,在欲重定向的网页或目录上按右键 2.选中“重定向到URL” 3.在对话框中输入目标页面的地址 4.选中“资源的永久重定向” 5.点击“应用”即可生效 ASP下的301转向代码:%@ Language="VBScript" % % Response.Status = "301 Moved Permanently" Response.AddHeader "Location", "网址" %
第一种情况,如果你有服务器或者vps,且系统是windows系统的。
在iis下,可以很简单的设置实现全站重定向 。
具体方法是:在VPS里把 域名的网站搭建好以后,按照同样的方式搭建一个xxxx.com的网站。然后打开“iis”。在XXXX.com的网站上鼠标右键打开选择属性,选择“主目录”标签,然后按照这个图设置
第二种情况,如果你的系统是Linux的。
做整站301跳转,很简单。如下修改文件httpd.conf或者.htaccess文件保存就可以了:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxxx.com [NC]
RewriteRule ^(.*)$ [L,R=301]
第三种情况,如果你是虚拟主机用户,如果你有子目录,恭喜你,也可以整站301重定向。具体方法是:
1.新建404.asp,把下面代码放到新建的404文件中保存。
代码
%@ Language=VBscript %
%
Dim PageURL
PageURL=“http://”Request.ServerVariables("HTTP_HOST")request.ServerVariables("URL") "?"Request.ServerVariables("QUERY_STRING")
PageURL = Replace(PageURL, “";,"") //修改为你的老域名
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", “”PageURL"" //修改为你的域名
%%@ language="VBscript"
%@ language="VBscript"
2.新建index.asp,把下面代码放到新建的ind文件中保存。
代码
%@ Language=VBscript %
%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location",""//修改为你的域名。
%%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", ""//修改为你的域名。
%
3.用ftp在网站根目录新建文件夹名为301,把上面的index.asp和404.asp上传进去。然后打开虚拟主机控制面板,添加子目录,把域名xxxx.com绑定到301文件夹 ,绑定后设置所属404页面为404.asp:
第四种情况,如果你是虚拟主机用户且你没有子目录,缺银子呗,呵呵,也是可以整站301的,具体方法是:
在网站根目录http.ini文件中,添加如下代码:
[ISAPI_Rewrite]# 3600 = 1 hourCacheClockRate 3600RepeatLimit 32
了;fid=t3:69:3了
RewriteCond Host:^xxxx\.com$
RewriteRule (.*) http\://www\.xxxx\.com$1 [I,RP)
当301重定向实施完之后,旧版本页面跳转到了新版本页面,或网址规范化了再或者其他的,大部分的站长都不会注意到301的HTTP状态是否返回成功。就在此时,可能有些网站的301重定向不传递状态或者出现404错误的状态码,这样容易造成任何情况下做的301重定向无法达到效果。笔者认为,想要正确的、有效果的做301重定向,一些细节还是需要注意的。
例如:404错误(页面未找到)或者200 OK(页面成功加载);301(返回301状态码成功)
正确的HTTP状态码:
错误的HTTP状态码:
首先看一个完整代码示例,关于nginx 301 302跳转的。301跳转设置:server {listen 80;server_name downcc;rewrite ^/(;rewrite ^/(.*) /$1 permanent;}last – 基本上都用这个Flag。break – 中止Rewirte,不在继续匹配redirect – 返回临时重定向的HTTP状态302permanent – 返回永久重定向的HTTP状态301Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:rewrite命令nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:rewrite 正则表达式 替换目标 flag标记flag标记可以用以下几种格式:last – 基本上都用这个Flag。break – 中止Rewirte,不在继续匹配redirect – 返回临时重定向的HTTP状态302permanent – 返回永久重定向的HTTP状态301特别注意:last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:location /download/ {rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;}nginx重定向的IF条件判断在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:正则表达式如:匹配判断~ 为区分大小写匹配; !~为区分大小写不匹配~* 为不区分大小写匹配;!~为不区分大小写不匹配例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /nginx-ie/$1 break;}文件和目录判断-f和!-f判断是否存在文件-d和!-d判断是否存在目录-e和!-e判断是否存在文件或目录-x和!-x判断文件是否可执行例如下面设定nginx在文件和目录不存在的时候重定向:if (!-e $request_filename) {proxy_pass 127.0.0.1;}return返回http代码,例如设置nginx防盗链:location ~* .(gifjpgpngswfflv)$ {valid_referers none blocked ;if ($invalid_referer) {return 404;}}
在MDN中HTTP的重定向一文中,介绍了3种重定向。
其中第一和第三种比较常见,大部分前端开发者应该写过第三种
本文所介绍的301、302和307属于http的重定向。
http 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行重定向操作(只是告知具体的状态码3xx,具体由浏览器执行)。
顾名思义,永久重定向说明当前的URL不再使用了,永远都重定向到新的URL,以状态码的形式告知浏览器。所以搜索引擎以及其他爬虫识别到该状态码时,会更新旧 URL 的资源。在http状态码中,以301代表永久重定向(还有308但我还没见过)。
应用场景包括:域名重定向,http到https等。
搜索引擎会更新301的资源地址。如下,ahrefs博客旧地址是 blog.ahrefs.com ,搜索引擎抓取到301状态码后,会更新该资源地址为 ahrefs.com/blog 。搜索ahrefs博客可以看到用的是新的地址:
有时候请求的资源无法从其标准地址访问,但是却可以从另外的地方访问。在这种情况下可以使用临时重定向将请求转移到另一个地方。http状态码302、307(还有303但我没见过)都属于临时重定向。
307与302的区别在于,收到307响应码后,客户端应保持请求方法不变向新的地址发出请求。
应用场景:http重定向到https、未登录的用户重定向到登录页、404后跳转首页等。
举例,用 访问百度。
实际上,当我再次用浏览器打开 ,状态码就变成307了并且含义跟rfc规范中的Temporary Redirect不一致。
仔细想来,目前为止我都没见过307 Temporary Redirect ,只见过307 Internal Redirect。
注意 Non-Authoritative-Reason: HSTS响应头。这是HTTP 的严格传输安全 (HSTS)。
这是一个虚假的响应,不是由服务器生成的, 由 Chrome 创建的虚拟 307 响应,并重定向到地址的 https 版本。因为chrome维护了一份HSTS站点列表,知道该域名必须要https方式请求,于是截获http请求后,做出 307响应。
那浏览器是如何知道这个 baidu.com 这个域名需要使用严格传输安全 (HSTS) 呢?
答案是第一次重定向到(或者直接访问) ,响应头中有一个特殊的头:
Strict-Transport-Security: max-age=172800
告诉浏览器在172800s内直接去使用https访问。
有趣的事,我在火狐上用同样的例子baidu测试,第一次302重定向之后,第二次再用 访问, 火狐会直接访问 。
这也可以看到 Strict-Transport-Security 响应头的优点:
此外, HTTP的 重定向 一文中还列出了 特殊重定向,把300和304都作为特殊重定向。 其中304 是 HTTP 缓存中的一个重要内容,表示资源未修改,相当于将资源重定向到本地缓存。
其实从用户的角度来看,不管是永久还是临时重定向都会发生跳转,浏览器中URL 变成了新的 URL,页面刷新。
301永久重定向对SEO无任何不好的影响,而且网页A的关键词排名和PR级别都会传达给网页B,网站更换了域名,表示本网页永久性转移到另一个地址,对于搜索引擎优化|SEO来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。
什么情况下使用301重定向
1:网站更换域名时,通过301永久重定向将旧域名重定向至新域名,挽回流量损失和SEO。
2:当出于需要删除网站中的某些目录时,比如我要删除我博客下的博客导航,这时就可以用301永久重定向到网站首页。
3:如果你有多个闲置域名时需要指向同一网站时,通过301永久重定向可以实现。
4:你打算实现网址规范化。
教程链接:
网页链接
301跳转通常用在网站换域名和为了保持链接统一性所用的。比如原来的域名现在换成,用了301跳转后,访问就会自动变成。下面摘抄一下设置301的代码:301跳转代码全集(ASP|PHP|JSP|.NET):
IIS下301设置:
Internet信息服务管理器 - 虚拟目录 - 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。
ASP下的301转向代码
%@ Language=VBScript %
%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “”
%
ASP.Net下的301转向代码
script runat=”server”
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,””);
}
/script
PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: ”);
exit();
CGI Perl下的301转向代码
$q = new CGI;
print $q-redirect(””);
JSP下的301转向代码
%
response.setStatus(301);
response.setHeader( “Location”,“” );
response.setHeader( “Connection”,“close” );
%
Apache下vhosts.conf中配置301转向,为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:
VirtualHost *:80
ServerName
DocumentRoot
/VirtualHost
VirtualHost *:80
ServerName xxx.com
RedirectMatch permanent ^/(.*)
/VirtualHost
Apache下301转向代码,新建.htaccess文件,输入下列内容(需要开启mod_rewrite):1)将不带WWW的域名转向到带WWW的域名下:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^xxx.com [NC]
RewriteRule ^(.*)$ [L,R=301]
2)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=123这样的地址转向到news-123.html
301设置好这后,就要检测一下301是否生效。这里有两个在线检测301重定向的工具:
国内版:
国外版:
关于301307服务器重定向和302永久重定向的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
广告位 后台主题配置管理 |
广告位 后台主题配置管理 |