301跳转代码全集(ASP|PHP|JSP|.NET)
301跳转代码全集(ASP|PHP|JSP|.NET)
1、IIS下301设置
Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。
2、ASP下的301转向代码
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.ahwebs.com/articles/301/”
%>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.ahwebs.com/articles/301/”
%>
3、ASP.Net下的301转向代码
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://www.ahwebs.com/articles/301/“);
}
</script>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://www.ahwebs.com/articles/301/“);
}
</script>
4、PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: http://www.ahwebs.com/articles/301/”);
exit();
header(”Location: http://www.ahwebs.com/articles/301/”);
exit();
5、CGI Perl下的301转向代码
$q = new CGI;
print $q->redirect(”http://www.new-url.com/”);
print $q->redirect(”http://www.new-url.com/”);
6、JSP下的301转向代码
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.ahwebs.com/” );
response.setHeader( “Connection”, “close” );
%>
response.setStatus(301);
response.setHeader( “Location”, “http://www.ahwebs.com/” );
response.setHeader( “Connection”, “close” );
%>
7、Apache下301转向代码
新建.htaccess文件,输入下列内容(需要开启mod_rewrite):
1)将不带WWW的域名转向到带WWW的域名下
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]
RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]
RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]
2)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]
RewriteEngine on
RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]
3)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=123这样的地址转向到news-123.html
8、Apache下vhosts.conf中配置301转向
为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:
<VirtualHost *:80>
ServerName www.ahwebs.com
DocumentRoot /home/lesishu
</VirtualHost>
ServerName www.ahwebs.com
DocumentRoot /home/lesishu
</VirtualHost>
<VirtualHost *:80>
ServerName lesishu.cn
RedirectMatch permanent ^/(.*) http://www.ahwebs.com/$1
</VirtualHost>
ServerName lesishu.cn
RedirectMatch permanent ^/(.*) http://www.ahwebs.com/$1
</VirtualHost>
Apache下除了以上2种方法,还有其他配置方法和可选参数
nginx rewrite 伪静态配置参数和使用例子 附正则使用说明
正则表达式匹配 :
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
flag标记有:
last 相当于Apache里的[L]标记,表示完成rewrite
break 终止匹配, 不再匹配后面的规则
redirect 返回302临时重定向 地址栏会显示跳转后的地址
permanent 返回301永久重定向 地址栏会显示跳转后的地址
$args 此变量与请求行中的参数相等
$content_length 等于请求行的“Content_Length”的值。
$content_type 等同与请求头部的”Content_Type”的值
$document_root 等同于当前请求的root指令指定的值
$document_uri 与$uri一样
$host 与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样
$limit_rate 允许限制的连接速率
$request_method 等同于request的method,通常是“GET”或“POST”
$remote_addr 客户端ip
$remote_port 客户端port
$remote_user 等同于用户名,由ngx_http_auth_basic_module认证
$request_filename 当前请求的文件的路径名,由root或alias和URI request组合而成
$request_body_file
$request_uri 含有参数的完整的初始URI
$query_string 与$args一样
$server_protocol 等同于request的协议,使用“HTTP/1.0”或“HTTP/1.1”
$server_addr request到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。
$server_name 请求到达的服务器名
$server_port 请求到达的服务器的端口号
$uri 等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index
例:
使用301跳转,判断当前域名不为www.uucan.com,直接跳转到 https://www.uucan.com/$1,可以直接用加在伪静态设置。
C
if ($host != 'www.uucan.com' ) {
return 301 https://www.uucan.com$request_uri;
}
return 301 https://www.uucan.com$request_uri;
}
Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。
第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。
rewrite ^/(.*)$ https://www.hi-linux.com/$1;
第二种:同样使用rewrite指令,不同的是通过$request_uri变量匹配所有的URI。
rewrite ^ https://www.hi-linux.com$request_uri? permanent;
这样写的好处是省去了去掉开头第一个反斜线的过程,正则匹配上性能更优。
第三种:使用return指令,通过301状态码和$request_uri参数,直接告诉Nginx这是个301重定向和抓取指定URI。
return 301 https://www.hi-linux.com$request_uri;
这种方法是性能上最优的,因为rewrite指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。
通过以上三种写法介绍,我们可以看出return指令在301跳转上比rewrite指令性能上更加有优势。虽然在访问量不大的情况下几种写法的性能表现上区别并不大,不过在海量访问中一个小小的优化也能在提升业务系统性能上起到不小的作用哟!
宝塔面板重定向无效bug解决办法:nginx伪静态跳转301跳转规则手动写法–ok
例如:
想实现:nginx环境下 url跳转 www.xaheimi.com/hot/heimiwangluo.html 跳转到 www.xaheimi.com
实例:
#nginx伪静态规则的地方粘贴下面的代码即可
rewrite ^/hot/heimiwangluo.html https://www.xaheimi.com/ permanent;=======================================================
宝塔面板默认重定向位302,会导致百度站长平台通不过。改成301的方法,将网站配置文件中的
if ($server_port !~ 443){
rewrite ^/.*$ https://$host$request_uri;
}
改成if ($server_port !~ 443){
rewrite ^/.*$ https://$host$request_uri permanent;
}
即可。这一段代码亲测成功了:
rewrite ^/vt/ /404.png permanent;
这句话的意思就是把本域名下凡是、VT文件夹以下的,所有跳转到404.png这个页面