最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apahce下.htaccess 重定向 301 302及图片防盗链规则
时间:2022-06-30 18:03:55 编辑:袖梨 来源:一聚教程网
让【.htaccess】文件生效
在windows2003环境下如何配置apache支持.htaccess呢?很简单,方法如下:
一、在Apache配置文件httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的“#”号保存。
二、配置虚拟主机文件httpd-vhosts.conf,重点颜色突出出。
代码如下 | 复制代码 |
|
三、重启Apache,OK
直接新建一个文件,并且命名为【.htaccess】是无法实现的,这是一个只有扩展名,没有文件名的文件,系统会提示输入文件名。我们可以用如下方法实现:
1、下载一个这个文件;
2、使用FTP、DW、记事本等软件建立,FTP可以直接建立这个文件,软件的话新建一个文件另存一下就可以了;
3、使用CMD或其他操作系统界面重命名文件为【.htaccess】;
4、【.htaccess】文件通常放置在根目录下,也可放置在子目录中,其效力范围为相对当前的路径,路径规则与html一致。
下面是一个典型的htaccess文件
# 开启URL重写 RewriteEngine on
# URL重写的作用域 RewriteBase /path/to/url
# 满足怎样的条件 RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
# 应用怎样的规则 RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L]
来 看看RewriteCond,首先有一个%,因为{HTTP_HOST}是一个apache变量,需要用%来指示。从!开始就是匹配的条件,支持 正则。!表示不等于,这句话的意思就是:如果HTTP_HOST不是www.example.com。后面的[NC](no case)表示忽略大小写,常见的还有
[L](last):终止一系列的RewriteCond和RewriteRule
[R](redirect):触发一个显示的跳转,也可以指定跳转类型,如[R=301]
[F](forbidden):禁止查看特定文件,apache会触发403错误
典型应用
图片防盗链
代码如下 | 复制代码 |
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?example.com/ [NC] RewriteRule .(gif|jpg|png)$ - [F] |
由于是基于HTTP_REFERER的验证,所以只能防止一般的图片盗链,因为HTTP_REFERER是比较容易伪造的
自定义404错误页面
如果用户输入了一个不存在的url,那么就显示自定义的错误页面
代码如下 | 复制代码 |
ErrorDocument 404 /404.html # 其他同理 ErrorDocument 500 /500.html |
处理移动过的文件
代码如下 | 复制代码 |
Redirect 301 /old.html /new.html |
# 也可以是下面这样 RewriteRule /old.html /new.html [R=301,L]
# 如果想隐式跳转(URL地址不变,但实际上内容是其他URL的),就使用下面的 RewriteRule /old.html /new.html [L]
对于RewriteRule还有好多文章可以做,比如
# 把html后缀的url链接到php文件
# $1指代的是前面第1个用括号括起来的内容 RewriteRule ^/?([a-z/]+).html$ $1.php [L]
# 或者把旧文件夹的内容链接到新文件夹 RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
# 隐藏文件名 RewriteRule ^/?([a-z]+)$ $1.php [L]
禁止显示目录列表
如果目录里没有index文件,又没有对该目录做过特别的处理,尤其是windows主机,那么该目录里的内容就会显示出来,这时可以在根目录创建 一个.htaccess文件,然后写上
Options -Indexes # 就这么一句就搞定了
阻止/允许特定IP/IP段
代码如下 | 复制代码 |
# 禁止所有IP,除了指定的 order deny,allow deny from all # 如果想允许IP段,如123.123.123.0 ~ 123.123.123.255,则 # allow from 123.123.123. allow from 123.123.123.123 ErrorDocument 403 /page.html |
#如果想禁止特定IP deny from 123.123.123.123
添加MIME类型
代码如下 | 复制代码 |
AddType video/x-flv .flv |
# 如果设置类型为 application/octet-stream 将提示下载 AddType application/octet-stream .pd
伪静态路径
伪静态路径:【http://www.abc.com/news/post-16.html】
真实路径:【http://www.abc.com/index.php?m=post&c=index&catdir=news&id=16】
【.htaccess】写法:
代码如下 | 复制代码 |
============ RewriteEngine on RewriteRule http://www.abc.com/([a-zA-Z]{1,})/post-([0-9]{1,}).html$ http://www.abc.com/index.php?m=post&c=index&catdir=$1&id=$2 ============ 当然,如果是放在根目录下,使用相对路径即可: ============ RewriteEngine on RewriteRule ([a-zA-Z]{1,})/post-([0-9]{1,}).html index.php?m=post&c=index&catdir=$1&id=$2 ============ |
解释:
注意,因为显示的问题,可能看不清空格,可以复制代码粘贴到其他软件查看。
文件中【RewriteEngine on】表示开启rewrite;
【RewriteRule】表示规则,每行一条,格式为【RewriteRule 匹配用户提交的的URL 服务器上脚本真正的URL】;
路径中的染色部分为参数,匹配时为标准的正则表达式,真实路径中的参数使用【$1】、【$2】、【$3】从左到右依次替代匹配URL中的正则表达式。
验证:
代码如下 | 复制代码 |
建立一个.htaccess文件,写入以下内容: |
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22