返回首页
使用.htaccess实现apache URL重定向
2019-02-06 17:02:26 进入详细
一、什么是URL重定向?URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另

一、什么是URL重定向?

URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术。

二、URL重定向怎么配置?

1)首先需要apache开启重定向,修改httpd.conf配置:

1  查找: 2  Options FollowSymlinks 3  AllowOverride None 5  改为: 6  Options FollowSymlinks 7 AllowOverride All

      2)去掉下面的注释 

LoadModule rewrite_module modules/mod_rewrite.so      //去掉行前的#

      3)重定向的配置在哪写?

        有两种方式,第一种是在httpd.conf中写,这种写法适合有服务器完整权限的网站管理员,写法大概如下:

 httpd.conf配置url重定向

4)我们这里主要介绍另外一种方式:在网站目录中使用.htaccess,这种方法适合采用虚拟主机形式的网站管理员,

         这两种办法设置的重定向规则其实基本上都是一样的,只是设置的地方不同。

三、基本正则表达式

因为URL重定向语法中大量使用了正则表达式,并且正则是每隔一段时间不用都必然会淡忘的东西,所以我们有必要先回顾一下基本的正则写法:

复制代码
.    换行符以外的所有字符  \w   匹配字母或数字或下划线或汉字  \s   匹配任意的空白符  \d   匹配数字  \b   匹配单词的开始或结束   ^   匹配字符串的开始  $   匹配字符串的结束  *   重复零次或更多次  +   重复一次或更多次  ?   重复零次或一次   {n}         重复n次   {n,}        重复n次或更多次   {n,m}       重复n到m次  () $1 $2    一个括号代表一个分组,第一个括号里匹配的内容就用$1引用,第二个括号匹配的内容用$2引用,以此类推......
复制代码

四、.htaccess都可以做什么?

.htaccess文件可以的事情,主要包括:文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,等等。。

五、.htaccess语法规则

我们先看一个图片防盗链的例子:

复制代码
1 RewriteEngine On 
2 Rewitebase /
3 RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/ [NC]        //如果来源网址不是*.baidu.com 3 RewriteCond %{HTTP_REFERER} !^$                                   //并且来源网址不是空 4 RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]     //如果访问的文件后缀是jpeg,jpg,gif,bmp,png的图片,则重定向到一个固定的图片
复制代码

然后我们下面根据这个例子依次展开说明:

    第一行:

RewriteEngine On|Off           //RewriteEngine 用于开启或停用rewrite功能。

   第二行:

复制代码
Rewritebase URL-path 
复制代码

   第三行:

复制代码
RewriteCond TestString CondPattern [flags] 
复制代码
服务器变量NAME_OF_VARIABLE具体数值见下表:
复制代码
HTTP_USER_AGENT //主要用于检测访问者系统和浏览器等 HTTP_REFERER //从哪个页面链接过来  HTTP_cookie
HTTP_FORWARDED
HTTP_HOST //域名 HTTP_PROXY_ConNECTION
HTTP_ACCEPT                      
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
script_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
document_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY TIME API_VERSION //这是正在使用的httpd中(服务器和模块之间内部接口)的Apache模块API的版本, 其定义位于include/ap_mmn.h中。此模块版本对应于正在使用的Apache的版本 (比如,在Apache 1.3.14的发行版中,这个值是19990320:10)。 通常,对它感兴趣的是模块的作者。 THE_REQUEST //这是由浏览器发送给服务器的完整的HTTP请求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何浏览器发送的附加头信息。 REQUEST_URI //这是在HTTP请求行中所请求的资源。 REQUEST_FILENAME //这是与请求相匹配的完整的本地文件系统的文件路径名或描述. IS_SUBREQ  //如果正在处理的请求是一个子请求,它包含字符串”true”,否则就是”false”。 模块为了解析URI中的附加文件,有可能会产生子请求。
复制代码

   flags

RewriteRule flag
RewriteRule标记 含 义 描 述
R Redirect 发出一个HTTP重定向
F Forbidden 禁止对URL地址的存取
G Gone 标记URL地址不存在
P Proxy 将URL地址传递给mod_proxy
L Last 停止处理接下来的规则
N Next 再次重第一个规则开始处理,但是使用当前重写后的URL地址
C Chain 将当前的规则和紧随其后的规则链接起来
T Type 强制执行指明的MIME类
NS Nosubreq 只在没有任何内部子请求执行时运行本脚本
NC Nocase URL地址匹配对大小写不敏感
QSA Qsappend 在新的URL地址后附加查询字符串部分,而不是替代
PT Passthrough 将重写后的URL地址传递给另一个Apache模块进行进一步处理
S Skip 忽略之后的规则
E Env 设置环境变量
复制代码
rewritecond的其他用法:
“-d”(目录)
    将TestString视为一个路径名并测试它是否为一个存在的目录。
“-f”(常规文件)
    将TestString视为一个路径名并测试它是否为一个存在的常规文件。
“-s”(非空的常规文件)
    将TestString视为一个路径名并测试它是否为一个存在的、尺寸大于0的常规文件。
“-l”(符号连接)
    将TestString视为一个路径名并测试它是否为一个存在的符号连接。
“-x”(可执行)
    将TestString视为一个路径名并测试它是否为一个存在的、具有可执行权限的文件。该权限由操作系统检测。
“-F”(对子请求存在的文件)
    检查TestString是否为一个有效的文件,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
“-U”(对子请求存在的URL)
    检查TestString是否为一个有效的URL,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
复制代码

    第四行:

RewriteRule Pattern Substitution [Flags] 

五、更多使用举例:

1、图片重定向

RewriteEngine On
RewriteCond %{HTTP_HOST} ^localhost$ //如果域名是localhost RewriteCond %{REQUEST_FILENAME} !-f //并且访问的文件找不到 RewriteRule ^images/(.+) http://127.0.0.1/test/showimages/$1 [R=302,L] //则跳转到另一个域名下的另一个目录访问这个图片

2、二级域名重定向到www.yourdomain.com

rewriteEngine on
rewriteCond %{http_host} ^yourdomain.com [NC]
rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

3、网站升级时,临时错误页面

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$     //如果请求的地址不是maintenance.html
RewriteCond %{REMOTE_ADDR} !^123.123.123.123       //客户端ip如果不是这个
RewriteRule $ /error.html [R=302,L]                //则重定向到error.html这个升级提醒页面

4、重定向RSS地址到FeedSky

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedSky [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feed.feedsky.com/yours

5、防止目录浏览:

Options All -Indexes

6、404重定向

Errordocument 404 /404.html

7、设置目录默认页面

DirectoryIndex about.html

 

备注:.htaccess的权限要设置成644


原文地址:http://www.qiye800.com/news/201902/06/qiye80043271.html
使用.htaccess实现apache URL重定向
企业800网 2019-02-06 17:02:26 一、什么是URL重定向?URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另
asp建站技术和asp.net建站技术都是微软的产品有什么区别(不一样的地方)
最新 2019-02-06 17:01:33 近日来有很多建站朋友问到Asp与ASP.net是不是一样的概念,今天深圳网站建设公司柏庆网络的技术人员简单的说说这方面,希望能够快
高端时尚的企业网站是如何设计出来的
企业800网 2019-02-06 16:48:01 现在越来越多的企业注重品牌形象,网站设计也是如此,来看看今天我们是如何设计出高端时尚感的品牌网站吧!对于高端品牌网站而言
网站改版需要注意的4点
企业800网 2018-03-25 11:01:25 改版,是一个问题。越来越多互联网公司产品人员意识到这个问题,无论是豆瓣的改版,还是Facebook的改版都遭到了用户的疯狂抵制。
如何写企业网站建设方案?
企业800网 2018-03-25 11:00:28 针对不同的客户实际需求,你这个网站建设方案的内容有很大的区别,但总体而言,无非就是以下面7点为主线:清晰的结构流程极具冲击
长春网站备案 长春网站快速备案 长春网站备案流程
企业800网 2018-03-13 11:29:04 网站备案是根据国家法律法规需要网站的所有者向国家有关部门申请的备案,主要有ICP备案和公安局备案。非经营性网站备案(Interne
企业为什么要建立网站,对企业的发展起到什么样的作用
企业800网 2018-03-10 18:09:21 时时商务网给大家介绍一下,企业为什么要建设网站,建立网站对企业有什么好处。(一)企业竞争的需求国际互联网的用户在迅猛地增
联系建立网站的公司前需要准备的资料 4435.cn
企业800网 2018-02-23 22:19:52 网站建设前客户需要准备的资料:1.网站名称(一般为公司全称)2.公司简介3.业务介绍4.要在网站上展示的图片(一般为企业全景照片
关键词合理布局有利于网站网站title优化
企业800网 2018-02-21 22:14:11 什么叫网站title优化?说起这个咱先来了解一下网站优化,网站优化是对网站进行程序、内容、版块、布局等多方面的优化调整,网站优
长春网站建设前期需要做哪些准备工作
企业800网 2018-02-21 21:16:40 网站建设前期准备工作相当重要,这决定你建站的目的,以及日后维护网站,让你的网站发挥作用等是相当的重要。在设计网站前,必须
建设企业网站需要准备哪些资料
企业800网 2018-02-21 21:12:48 建一个什么样的网站,是能帮企业来获得成功?对于网站的搭建,这里面是肯定存在许多学问的,但就在网站建设中,同样还有一些错误
更多文章 进入论坛 我要发帖
Powered by 4435.cn 长春网站建设,业务咨询:136-2446-7185