htaccess编写规则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了htaccess编写规则相关的知识,希望对你有一定的参考价值。

参考技术A .htaccess基本语法和应用
.htaccess是Apache服务器的一个非常强大的分布式配置文件。
正确的理解和使用.htaccess文件,可以帮助我们优化自己的服务器或者虚拟主机。
如何启用htaccess
以windows为例,进入apache/conf目录,找到httpd.conf文件,去掉
LoadModule rewrite_module modules/mod_rewrite.so
前面的#,然后设置目录属性AllowOverride All,重启apache即可
常见格式
下面是一个典型的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 http://yoursite.com/new.html

# 也可以是下面这样
RewriteRule /old.html http://yoursite.com/new.html [R=301,L]

# 如果想隐式跳转(URL地址不变,但实际上内容是其他URL的),就使用下面的
RewriteRule /old.html http://yoursite.com/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

<Files page.html>
allow from all
</Files>

#如果想禁止特定IP
deny from 123.123.123.123

添加MIME类型
AddType video/x-flv .flv

# 如果设置类型为 application/octet-stream 将提示下载
AddType application/octet-stream .pdf

高分请教.htaccess规则写法..URL 301

问题详见图片,不知道怎么的,老发不出问题,用图片试下:
简单说下,我的域名 aaa。com, 想重定向到 aaa。com/blog目录,但是其他url,比如aaa。com/xxx这种url不重定向,请问htaccess 文件应该怎么写呢?

这个是关键
RewriteRule ^(.*)$ xxx.com/blog/$1 [R=301,L]
如果只需要把 http://aaa.com/ 301转向到 http://xxx.com/ 其它不管的话,应该是
RewriteRule ^$ http://xxx.com/blog/ [L,R=301]追问

谢谢,那请问下,如果是除了aaa。com/blog这个url不转发,其他都转发应该怎么写呢?

追答

那就加条件
RewriteCond %HTTP_HOST ^aaa\.com$
RewriteCond %REQUEST_URI ^/blog

参考技术A 看不到 大图追问

点击图片或者保存下来看呢? 我这里没法补充问题,用文字发出来,baidu就给我吞了

以上是关于htaccess编写规则的主要内容,如果未能解决你的问题,请参考以下文章

我的 htaccess 规则不适用于实时服务器上的项目(htaccess 在文件夹内)

PHP/Apache:用 .htaccess 重写规则

.htaccess 规则在用户使用站点时使站点脱机

Htaccess 规则将域重定向到 index.html

高分请教.htaccess规则写法..URL 301

子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)