rewrite常用的.htaccess规则举例(rewrite伪静态规则大全)

先解析一下典型的.htaccess文件:

# 开启URL重写
RewriteEngine on
# URL重写的作用域
RewriteBase /path/url
# 满足怎样的条件
RewriteCond %{HTTP_HOST} !^www\.oy51\.com$ [NC]
# 应用怎样的规则
RewriteRule .? http://www.oy51.com%{REQUEST_URI} [R=301,L]

来说说RewriteCond,首先有一个%,因为{HTTP_HOST}是一个apache变量,需要用%来指示。从!开始就是匹配的条件,支持 正则。!表示不等于,这句话的意思就是:如果HTTP_HOST不是www.oy51.com。后面的[NC](no case)表示忽略大小写,常见的还有:

  • [L](last):终止一系列的RewriteCond和RewriteRule
  • [R](redirect):触发一个显示的跳转,也可以指定跳转类型,如[R=301]
  • [F](forbidden):禁止查看特定文件,apache会触发403错误

1、主域名指向子目录

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?oy51.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?oy51.com$
RewriteRule ^(/)?$ subfolder/index.php [L]

 2、规范www

①、全部统一到带www,例如将oy51.com统一到www.oy51.com

ewriteEngine on
RewriteCond %{HTTP_HOST} ^oy51\.com$ [NC]
RewriteRule ^(.*)$ http://www.oy51.com/$1 [L,R=301]

 ②、全部统一到不带www,例如将www.oy51.com统一到oy51.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.oy51\.com$ [NC]
RewriteRule ^(.*)$ http://oy51.com/$1 [L,R=301]

3、防止别人域名恶意解析

RewriteEngine On
RewriteCond %{HTTP_HOST} !(^www\.oy51\.com$) [NC]
RewriteRule ^(.*)$ http://www.oy51.com/$1 [L,R=301]

 4、启用Deflate

# 在.htaccess中加入下面代码给指定文件后缀启用Deflate,Apache2.0以上版本支持Deflate。


SetOutputFilter DEFLATE


 
# 指定启用Deflate的文件后缀,增加的后缀用|隔开即可,例如 

 5、设置默认首页及顺序

# 在.htaccess文件中加入以下后缀名(可以根据自身需求进行调整):

DirectoryIndex index.html index.htm index.php index.cgi 

6、禁止显示目录列表

# 如果目录没有默认首页文件,将会列出文件列表,可能造成安全隐患,
# 为避免这种情况发生,可以在.htaccess文档中键入以下命令,用以阻止目录列表的显示:
Options -Indexes 

7、设置目录及文件密码保护

# 给目录设置密码保护,在该目录建立一个.htaccess文件,放入如下内容:
AuthUserFile /opt/guide/www.idcspy.org/.htpasswd
AuthType Basic
AuthName "Member Page"
require valid-user
# 注:AuthUserFile 设置密码文件的路径。

 8、图片防盗链

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?oy51\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
# 由于是基于HTTP_REFERER的验证,所以只能防止一般的图片盗链,因为HTTP_REFERER是比较容易伪造的.

 9、自定义404错误页面

# 如果用户输入了一个不存在的url,那么就显示自定义的错误页面
ErrorDocument 404 /404.html
# 其他同理
ErrorDocument 500 /500.html

 

你可能感兴趣的:(HTML)