如何通过.htaccess实现301跳转
2016-05-10 10:50
190 查看
在做站过程中我们或多或少的会遇到关于网站搬家、网站架构更改的问题。但如果不做任何预防工作就着手网站更改,等着我们的就是搜索引擎上网站无情的“消失”。
所以为了防止由于网站结构或网站地址变更造成的影响,我们就需要了解一下如何使用.htaccess来实现网站的301跳转。
首先说到.htaccess文件很多人都听说过他,这是一个强大的文件,可以定义很多功能。包括自定义404页面、关闭index of页面(教程)还有我们今天要讲的301重定向功能。当然除了这些更加强大的功能也是支持的,如将某个特定浏览器的用户导向特定页面、对某个目录进行特定访问人群的限制(教程)、甚至用来屏蔽特定的攻击(通过IP、USER-AGENT、跳转来源等)。点我查看.htaccess基本教程
要想了解.htaccess的重写功能,就需要了解下.htaccess文件的重写规则。
RewriteEngin On (启用重写规则 – 这个必须要写在.htaccess的最开端,否则重写规则无效)
RewriteCond TestString CondPattern (这个可以理解为条件公式,即需要满足的基本条件)
RewriteRule Pattern Substitution (这个是规则,即满足上面的条件后需要执行的操作)
下面是一个简单的重写规则:将oldname.com 重定向到 newname.com
RewriteEngin On
RewriteCond %{HTTP_HOST} ^oldname\.com$ [NC]
RewriteRule .* ^newname\.com$ [R=301]
*由于.htaccess识别正则表达式,所以在书写条件、规则的时候你会经常见到诸如 ^ \ $ 这样的字符。可先了解下正则表达。如果图省事,直接把oldname与newname换成你的域名就行了。
*[NC] – 注明不分大小写
* [R=301] – 注明使用301跳转,或者直接使用[R]标记也行
第二个例子用来模拟将网站下某个目录变更名称或路径:将domain.com/old下的访问全部重定向到domain.com/newfold/new/目录下。
RewriteEngin On
RewriteCond %{REQUEST_URI} ^\/old [NC]
RewriteRule .* \.\/newfold\/new\/ [R]
*这里我们假设已经定义了重写基准路径就是domain.com的这个目录(RewriteBase /),那么我们的条件就应该是访问 /old 目录时重定向到 /newfold/new/目录下即可。
所以为了防止由于网站结构或网站地址变更造成的影响,我们就需要了解一下如何使用.htaccess来实现网站的301跳转。
首先说到.htaccess文件很多人都听说过他,这是一个强大的文件,可以定义很多功能。包括自定义404页面、关闭index of页面(教程)还有我们今天要讲的301重定向功能。当然除了这些更加强大的功能也是支持的,如将某个特定浏览器的用户导向特定页面、对某个目录进行特定访问人群的限制(教程)、甚至用来屏蔽特定的攻击(通过IP、USER-AGENT、跳转来源等)。点我查看.htaccess基本教程
要想了解.htaccess的重写功能,就需要了解下.htaccess文件的重写规则。
RewriteEngin On (启用重写规则 – 这个必须要写在.htaccess的最开端,否则重写规则无效)
RewriteCond TestString CondPattern (这个可以理解为条件公式,即需要满足的基本条件)
RewriteRule Pattern Substitution (这个是规则,即满足上面的条件后需要执行的操作)
下面是一个简单的重写规则:将oldname.com 重定向到 newname.com
RewriteEngin On
RewriteCond %{HTTP_HOST} ^oldname\.com$ [NC]
RewriteRule .* ^newname\.com$ [R=301]
*由于.htaccess识别正则表达式,所以在书写条件、规则的时候你会经常见到诸如 ^ \ $ 这样的字符。可先了解下正则表达。如果图省事,直接把oldname与newname换成你的域名就行了。
*[NC] – 注明不分大小写
* [R=301] – 注明使用301跳转,或者直接使用[R]标记也行
第二个例子用来模拟将网站下某个目录变更名称或路径:将domain.com/old下的访问全部重定向到domain.com/newfold/new/目录下。
RewriteEngin On
RewriteCond %{REQUEST_URI} ^\/old [NC]
RewriteRule .* \.\/newfold\/new\/ [R]
*这里我们假设已经定义了重写基准路径就是domain.com的这个目录(RewriteBase /),那么我们的条件就应该是访问 /old 目录时重定向到 /newfold/new/目录下即可。
相关文章推荐
- EL表达式jsp页面double小数点后保留两位
- Java集合---ConcurrentHashMap原理分析
- Unity开发者的C#内存管理(上篇)
- CAD系统变量(参数)大全
- Plextor 浦科特M7VC性能
- codeforces 615B. Longtail Hedgehog
- spring配置文件beans.xml的文档声明部分。
- Tomcat Manager用户配置详解
- 动态库的链接和链接选项-L,-rpath-link,-rpath
- 带有下拉刷新和上拉加载的的ExpandableListView
- app安装不上、Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- Android都到了4GB 为什么卡顿还存在?
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包
- iOS动画编程-2
- WDF DMA 一些概念(一)
- 二手车销售管理系统都是什么语言开发的?
- Android Http请求方法汇总
- 数位DP CF 55D Beautiful numbers
- Redis CrackIT入侵事件分析
- genymotion创建虚拟设备提示failed to deploy virtual device - 爱程序网