301重定向详解

IIS的301永久重定向设置如下图
620e13b9efbc4ed3895733a40c1916fd.jpg
IIS重定向参数
  1、$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
  2、$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
  3、$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
  4、$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
  参数还有很多,基本上最常用的就是$S和$Q,任意网址想要实现301的永久重定向只需设置$S和$Q就可以了 。

apache的301重定向
采用“mod_rewrite”模块, 在.htaccess文件中增加301重定向指令:

RewriteEngine on
RewriteCond %{http_host} ^2dan.cc [NC]
RewriteRule ^(.*)$ http://www.www.2dan.cc/$1 [L,R=301]

nginx的301重定向
在nginx.conf文件的server字段增加:

if ($host != 'www.2dan.cc'){
                rewrite ^/(.*)$ http://www.2dan.cc$1 permanent;
}

意思是只要不是www.2dan.cc的域名,全跳转到www.2dan.cc域名上
如果你只想设置不带www的域名跳转到www的域名上。而其他设置的域名正常
请替换成:

if ($host = '2dan.cc'){
rewrite ^/(.*)$ http://www.2dan.cc$1 permanent;
}

用代码实现301跳转
ASP下的301转向代码

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","https://www.2dan.cc/"
Response.End
%>

ASP.Net下的301转向代码

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”www.2dan.cc“);
}
</script>

PHP下的301转向代码

header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: www.2dan.cc”);
exit();

CGI Perl下的301转向代码

$q = new CGI;
print $q->redirect(”www.2dan.cc”);

JSP下的301转向代码

<%
response.setStatus(301);
response.setHeader( “Location”, “www.2dan.cc” );
response.setHeader( “Connection”, “close” );
%>

标签:Apache, rewrite, php, 301, iis, asp, cgi, jsp

添加新评论