现在位置首页 / 项目实战 /正文

http 状态303说明及各种动态语言跳转方法

作者: IT小兵 | 2014年4月6日| 热度:℃ | 评论: |参与:

  HTTP 303重定向(参见RFC 2616 - 10.3.4)是HTTP 1.1规范的组成部分。
服务器可以通过返回303状态码告诉客户端,本次请求的内容可以通过返回的跳转URL取到,因此客户端应该重定向到新的URL。
该技术被广泛用于网页开发领域,如在文件上传完成后让客户端自动重定向到一个上传成功的结果页面。

更多状态参考:

[ASP.net httpcontent处理对象Request和Response详细说明]

[Http请求状态及jquery ajax请求异常处理]

  • 303 See Other

  • 对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的URI不是原始资源的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。

  • 新的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。

  • 注意:许多HTTP/1.1版以前的浏览器不能正确理解303状态。如果需要考虑与这些浏览器之间的互动,302状态码应该可以胜任,因为大多数的浏览器处理302响应时的方式恰恰就是上述规范要求客户端处理303响应时应当做的。

ASP下的301转向代码

<%@ Language=VBScript %>
<%
Response.Status=”303 See Other”
Response.AddHeader “Location”, “http://www.mokolady.com/303/”
%>

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

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “303 See Other”;
Response.AddHeader(”Location”,”www.mokolady.com/303/“);
}
</script>

代码:

response.setContentType("text/html;charset=UTF-8");  
        response.setHeader("Location""/login.jsp");  
        response.setStatus(303);  


各浏览器对303的处理方式: 
共同点:三个浏览器在收到服务器303的响应后,都选择了立刻重定向到新的URI,在firefox使用firebug可以看处理的流程。 



不同服务器可能设置方法不一样的

iis

IIS服务器的301重定向没有liunux服务器好解决,而且IIS的虚拟主机是无法实现301重定向的,这里也建议大家尽量选择apche服务器来做站。

之前我的博客写过一种方法是在httpd.ini文件里面添加

  1. RewriteCond Host: ^zhanhelp\.com$

  2. RewriteRule (.*) http\://www\.zhanhelp\.com$1 [R,I]

复制代码


来实现IIS服务器下301重定向,结果最近http状态检测发现这样结果是302临时定向。下面就分享下IIS6、IIS7服务器如何做301永久重定向,有2种方法:

方法一:

适用于虚拟空间和独立服务器,需要服务器配置伪静态版本要在1.3以上,在httpd.ini文件里面添加如下代码即可。

  1. RewriteCond Host: ^zhanhelp\.com$

  2. RewriteRule (.*) http\://www\.zhanhelp\.com$1 [I,RP]

  3. RewriteRule ^(.*)\/forum.php$ http://www.域名.com/ [L,R=301]

复制代码



Apache下301重定向的方法

方法二:

适用于独立服务器,需要建立单独的站点。

一、在站点目录创建一个文件夹,如zhanhelp,然后在这个文件里面新建一个记事本,修改为index.html即可(要把记事本的后缀.txt修改为.html哦)。

二、在Internet 信息服务(IIS)管理器里面新建站点,右键--属性--主目录,选择重定向到,输入网址如:www.zhanhelp.com,同时注意选中下面的资源的永久重定向选项。



三、确定后到此就完成了IIS服务器上面zhanhelp.com做301永久重定向到www.zhanhelp.com的工作。



Apache设置:

你是同一目录下的网站,还是不同目录下的网站,如果是同一目录下的网站,就必需要地址判断,以免出现“此网页包含重定向循环”;如何是不同目录下的网站,就可以直接弄转向,也就是所有来路域名都转;如果两域名在同一目录,请把伪静态规则放在 301的下面,即先转,再伪。

一、301 永久重定向:  

1、所有链接重定向首页: 可新建一个 index.php     (两站不同目录)

  1. <?php

  2. header('Location:http://bbs.zb7.com');

  3. ?>

复制代码

2、只首页重定向,贴子等都不重定向、不变

  1. RewriteEngine on

  2. RewriteCond %{HTTP_HOST} ^zhanhelp.com$ [OR]

  3. RewriteCond %{HTTP_HOST} ^www.zhanhelp.com$

  4. RewriteRule ^/?$ "http\:\/\/www\.zhanhelp\.com" [R=301,L]

复制代码

注:只首页重定向,内页、目录不重定向,访问还是原地址。
[OR] 是 “或” 也就是使用带WWW和不带WWW的都转,应该可以加很多 [OR] 做条件。 如bbs子域名转 bbs目录转

注意, [OR]条件判断,如果只一个条件,请把  [OR] 去掉。不然有可能出现: “此网页包含重定向循环”
(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)

注意:以上规则中:
^zhanhelp.com    表示:是 zhanhelp.com
!^zhanhelp.com   表示:不是 zhanhelp.com
[NC]  为不管大小写。

2、首页、贴子、目录都重定向zhanhelp.com 的首页、 或指定页:

  1. RewriteEngine on

  2. RewriteCond %{HTTP_HOST} ^zhanhelp.com$ [OR]

  3. RewriteCond %{HTTP_HOST} ^www.zhanhelp.com$

  4. RewriteRule ^(.*)$ http://bbs.zb7.com [R=301,L]

复制代码

注:首页、内页、目录都重定向到zhanhelp.com的首页。
(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)

3、www域名 转 根域名 301。这个是最常用的,首页、贴子、目录,所有的都同步重定向:

  1. RewriteEngine on

  2. RewriteCond %{HTTP_HOST} ^zhanhelp.com$ [NC]

  3. RewriteRule ^(.*)$ "http://bbs.zb7.com/$1" [R=301,L]

复制代码

注:首页、内页、链接将都重定向到另一站的相同链接。
(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)

4、A域名转B域名,首页、贴子、目录,所有的都同步重定向:

  1. RewriteEngine on

  2. RewriteCond %{HTTP_HOST} ^zhanhelp.com$ [OR]

  3. RewriteCond %{HTTP_HOST} ^www.zhanhelp.com$

  4. RewriteRule ^(.*)$ "http://bbs.zb7.com/$1" [R=301,L]

复制代码

注:首页、内页、链接将都转向到另一站的相同链接。
(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)

5、如果只子目录重定向,包括目录下的所有链接,其它的不重定向:

    如:要把 zhanhelp.com/bbs 下重定向到 zhanhelp.com 来,但zhanhelp.com不重定向。

(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)
(这个子目录转,判断语可不用,直接使用最后一行,子目录下的所有来路都转)

301转向,这个你就自己总结1、2、3、4,灵活应用吧!
----------------------------------------------------------------
以上为301把贴子、地址都重定向到新地址。  

如果不需要贴子地址都重定向,只把域名重定向,那么,你只需用一首页文件 index.php

内容为:  (网址换成你要重定向到目标网址)

  1. <?php

  2. $url="".$_SERVER["REQUEST_URI"];

  3. header("HTTP/1.1 301 Moved Permanently");

  4. header("location:http://bbs.zb7.com");

  5. ?>

复制代码

这方法为域名直接跳转,如需跳转到子目录,直接在网址加上子目录即可。 (两站不同目录)

htaccess技巧  在 Linux 系统,支持 htaccess 规则下使用。

注:301转向.htaccess 的规则在 Linux 系统 Apache 上测试通过,但是在 Linux 系统 LiteSpeed 上出现 500错误等。或许不兼容。

二、建一个404.htm 文件传根目录

自动义 404、403 错误,在.htaccess里面添加

  1. ErrorDocument 404 /404.htm

  2. ErrorDocument 403 /404.htm

复制代码

注:可自己设定无法找到文件转到哪个页  后面的404.htm 可自行改。

11个精品404页面免费提供下载了

服务器与VPS中IIS设置404页不生效的解决方法


三、.htaccess 设置默认首页:

DirectoryIndex index.html index.php default.htm

注:有些空间,默认首页先后不同,自己想要把哪个先访问,可用此设置

四、.htaccess 禁止IP访问网站:

  1. Order Allow,Deny

  2. Deny from 582.46.2.67

  3. Allow from all

复制代码

注:禁止 582.46.2.67 这个IP访问你的站点,可自己测试下禁止自己IP。
     可应该在,如遇到服务器攻击,查出这个IP,禁止这个IP访问。


五、.htaccess 禁止图片、文件盗链:

  1. RewriteCond %{HTTP_REFERER} !^$ [NC]

  2. RewriteCond %{HTTP_REFERER} !zhanhelp.com [NC]

  3. RewriteRule \.(gif|jpg|rar|zip)$ http://zhanhelp.com/logo.gif [R,L]

复制代码



点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询