301重定向达成格局总结,htaccess剖断域名跳转
分类:pc28.am神测网

柯冷

linux系统中.htaccess 301重定向实现方法总结 有需要的朋友可参考一下本文章。

1、.htaccess rewrite实例开始部分

1、Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了。网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向。下面就以我的www.jb51.net为例
1.1 无www域名转移到www域名

手记,很简单。

在设置 301 重定向之前务必备份相应目录下的.htaccess文件。.htaccess 301转向设置仅限于linux主机,并须要支持虚拟主机,上次试了重定向domain.com到www.domain.com,还真立即生效了

Options FollowSymLinks
RewriteEngine On
RewriteBase /

复制代码 代码如下:

RewriteEngine on

1.重定向domain.com到www.domain.com

2、把不带www的域名地址重定向到带www地址

RewriteEngine on
rewritecond %{http_host} ^jb51.net [nc]
rewriterule ^(.*)$ //www.jb51.net/$1 [r=301,nc]

RewriteCond %{HTTP_HOST} baidu.com$ [NC] RewriteRule

这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)

Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.metsky.com$ [NC]
RewriteRule ^(.*)$ [R=301,L]

1.2 整站301重定向

^(.*)$ [L,R=301]

 代码如下

3、终止重写死循环

复制代码 代码如下:

手记,很简单。 RewriteEngine on RewriteCond %{HTTP_HOST} baidu.com$ [NC] RewriteRule ^(.*)$ [L,R=301]...

复制代码

RewriteCond %{REQUEST_URI} ^/(stats/|missing.html|failed_auth.html|error/).* [NC]
RewriteRule .* - [L]

Options FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^jb51.net [NC]
RewriteRule ^(.*)$ //www.jb51.net/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.jb51.net [NC]
RewriteRule ^(.*)$ [L,R=301]

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

另外一种是在根目录下的index.php里这样弄

2.重定向www.domain.com到domain.com

4、缓存友好文件名

复制代码 代码如下:

 代码如下

这个是原作者的最爱,一般是面向JS和CSS等缓冲文件处理,通过设置不同的名字(比如版本或数字编号)来达到让用户更新(定期)缓存的目的。然后在服务器端,很可能始终就是同一个文件。下面的例子似乎重写 /zap/j/anything-(任意数字).js有关的所有文件,重写为/zap/j/anything.js,CSS处理也类似,把/zap/c/anything-(任意数字).css重写为/zap/c/anything.css。

header("HTTP/1.1 301 Moved Permanently");
header("Location:");
exit();

复制代码

RewriteRule ^zap/(j|c)/([a-z] )-([0-9] ).(js|css)$ /zap/$1/$2.$4 [L]

2、ASP主机301重定向 在 index.asp 或 default.asp 的最顶部加入以下几行:
代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

5、为无FLASH浏览器设置SEO友好链接

复制代码 代码如下:

3.重定向olddomain.com到www.newdomain.com

如果用户的浏览器不支持FLASH,可能需要进行友好提醒,那么以下的rewrite重写规则可以让我们少些很多代码。使用时只需要调用自己的域名加上地址调用就可以了。

<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","//www.jb51.net "
Response.End
%>

 代码如下

RewriteRule ^getflash/?$ [NC,L,R=307]

3、ASP.net主机301重定向 ASP .NET:
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","//www.jb51.net");
}
我封装在一个类里:

复制代码

6、移除查询Query string字符串

复制代码 代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

以下的重写规则会让你少很多SEO上的重复内容,比如page.html和page.html?anything=anything文件,简单的方法就是通过重定向这些带query string的外部请求到没有query string目标地址。

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
namespace ClassLib
{
public class URLClass
{
private bool flag301 = false;//是否启动 301
private bool isIndex = false;//是否 返回主页 或者保留在当前页
/// <summary>
/// 构造函数
/// </summary>
/// <param name="fl">是否启动 301</param>
/// <param name="page">Page</param>
/// <param name="strURL">格式www.xxx.com</param>
public URLClass(bool fl, Page page, string strURL)
{
flag301 = fl;
URL301(page, strURL);
}
/// <summary>
/// 返回主页
/// </summary>
/// <param name="page"></param>
/// <param name="strURL">格式www.xxx.com</param>
public void URL301(Page page, string strURL)
{
//301重定向
if (page.Request.Url.DnsSafeHost != strURL && flag301 == true)
{
page.Response.Clear();
page.Response.StatusCode = 301;
page.Response.Status = "301 MovedPermanently";
page.Response.AddHeader("Location", "http://" strURL);
page.Response.End();
}
}
}
}

4.重定向olddomain.com to newdomain.com

RewriteCond %{THE_REQUEST} ^GET /.*;.* HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* [R=301,L]

4 PHP的301重定向

 代码如下

7、发送请求给PHP脚本

复制代码 代码如下:

复制代码

这个.htaccess rewrite示例对pdf-script.php处理Adobe pdf请求文件完全隐匿。

header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

RewriteRule ^(. ).pdf$ /cgi-bin/pdf-script.php?file=$1.pdf [L,NC,QSA]

我用301.inc.php文件写了301代码,在其他文件头部都引用上 就可以了

5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php

8、设置客户端的语言变量

复制代码 代码如下:

 代码如下

对支持多语言显示的网页,可以看一下下面的重写。

<?php
//-----------------------------------
//301 重定向
$strDomain="chinawecan.com";
$the_host = $_SERVER['HTTP_HOST']; //取得进入所输入的域名
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面部分
if($the_host !== 'www.'.$strDomain) //这是我要以前的域名
{
/*"!=="是不完全等于的意思,也可以用"!="不等于,这样,就可以将以前的域名,
包括gcxirang.com、www.gcxirang.com以及新域名中我gcidc.net全部重定向到www.gcidc.net*/
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:
}
//----------------------------------
?>

复制代码

RewriteCond %{HTTP:Accept-Language} ^.*(de|es|fr|it|ja|ru|en).*$ [NC]
RewriteRule ^(.*)$ - [env=prefer-language:%1]

引用如下:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ [R=301,L]

9、只支持PHP fopen访问,其它一概拒绝

复制代码 代码如下:

如果是是WIN主机,看你的主机是否支持重定向。如果支持,你的命名文件为:httpd.ini,代码为:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^. $ [NC]
RewriteRule .* - [F,L]

<?php
//-----------------------------------
//301 重定向
include('include/301.inc.php');
?>

 代码如下

10、除php fopen可以访问某个子文件夹,其它一概拒绝

5 JSP的301重定向
如一页面article.jsp
[code]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location","/other.jsp");
return;
%>
[code]

复制代码

下面的示例可以让你的服务器媒体文件或特殊下载文件只能通过PHP代理脚本下载。

在apache中如何实现301转向呢? 编辑.htaccess的方法。
注意:在设置301重定向之前务必备份相应目录下的.htaccess文件。
1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。
打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
RewriteEngine On
RewriteCond Host: ^nantongzufang.com$
RewriteRule (.*) [I,R]

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/] )/.* HTTP [NC]
RewriteRule .* - [F,L]

2.重定向www.domain.com到domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

301重定向实现方法总结 有需要的朋友可参考一下本文章。 在设置 301 重定向之前务必备份相应目录下的.htaccess文件。.ht...

11、重定向带www到不带www网址

3.重定向olddomain.com到www.newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^abc.com$ [NC]
RewriteRule ^(.*)$ [R=301,L]

4.重定向olddomain.com to newdomain.com
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ [L,R=301]

12、检查Query string关键字

5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ [R=301,L]

下面的示例是检查QUERY_STRING是否包含passkey,否则将跳到登录脚本去。

您可能感兴趣的文章:

  • Asp.Net实现404页面与301重定向的方法
  • Windows虚拟主机与VPS如何实现301重定向(asp.net)
  • 301重定向代码合集(iis,asp,php,asp.net,apache)
  • asp,asp.net,php,jsp下的301转向代码
  • ASP.NET中的跳转 200, 301, 302转向实现代码
  • ASP.NET实现301重定向方法

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !passkey
RewriteRule ^/logged-in/(.*)$ /login.php [L]

13、去除URL中的QUERY_STRING

以下示例去除所有的QUERY_STRING,包括在问好后面跟个空格,都将被mod_rewrite先去除,然后再重定向。

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} .
RewriteRule ^login.php /login.php? [L]

14、修复无限循环

由于潜在的配置错误引起的内部重定向请求超过10次就会有一个条错误消息,如果需要增加次数,可以使用LimitInternalRecursion。还可以使用LogLevel debug进行后向跟踪。

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

15、重定向PHP文件到HTML文件

RewriteRule ^(.*).php$ /$1.html [R=301,L]

16、重定向.html到.php文件

RewriteRule ^(.*).html$ $1.php [R=301,L]

17、规定时间阻止访问某些文件

Options FollowSymLinks
RewriteEngine On
RewriteBase /
# If the hour is 16 (4 PM) Then deny all access
RewriteCond %{TIME_HOUR} ^16$
RewriteRule ^.*$ - [F,L]

18、下划线改成连字符

Options FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule !.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]

RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) [R=301,L]

19、重定向Wordpress Feeds到Feedburner

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/feed.gif$
RewriteRule .* - [L]

RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

20、只允许GET和PUT请求

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} !^(GET|PUT)
RewriteRule .* - [F]

21、图像、文件防盗链

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

22、停止浏览器预存取

RewriteEngine On
SetEnvIfNoCase X-Forwarded-For . proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes

# 阻止X-moz头的预存取请求
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]

23、把abc.php?id=123重写到def.php?fid=123

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^abc.php$ def.php?fid=%1 [L]

本文由pc28.am发布于pc28.am神测网,转载请注明出处:301重定向达成格局总结,htaccess剖断域名跳转

上一篇:httpd基础配置和设想主机的配备方式,2装置及轻 下一篇:没有了
猜你喜欢
热门排行
精彩图文