301重定向详解
IIS的301永久重定向设置如下图
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” );
%>