重写规则

日期:2019-09-28编辑作者:关于计算机

.htaccess 规则

重写准则

  1. Introduction 介绍
    文件名 .htaccess 属性 644 (RW-R–R–)
    htaccess会影响它所在目录下的全数子目录
    留意大大多内容都须求保持在一行之内,不要换行,不然会唤起错误

  2. Error Documents 错误文书档案
    Official document: ErrorDocument Directive
    ErrorDocument code document
    例子
    ErrorDocument 400 /errors/badrequest.html
    ErrorDocument 404
    ErrorDocument 401 “Authorization Required”

【重写准绳的成效范围】

more..
less.. (注意之后内容一经出现的双引号须要转义为 ”)
常见HTTP状态码
Successful Client Requests
200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content
Client Request Redirected
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
Client Request Errors
400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
Server Errors
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported

  1. 能够应用在Apache主配置文件httpd.conf中
  2. 能够选拔在httpd.conf里定义的设想主机配置中
  3. 能够动用在着力目录的超过常规配置文件.htaccess中
  1. Password Protection 密码尊敬
    Official document: Authentication, Authorization and Access Control
    万一密码文件为.htpasswd
    AuthUserFile /usr/local/safedir/.htpasswd (这里不可不使用全部径名)
    AuthName EnterPassword
    AuthType Basic
    两种常见验证格局:
    Require user windix
    (仅允许顾客windix登录)
    Require valid-user
    (全数合法顾客都可登入)
    Tip: 怎样变化密码文件
    使用htpasswd命令(apache自带)
    先是次生成供给创设密码文件
    htpasswd -c .htpasswd user1
    之后增加新客商
    htpasswd .htpasswd user2

  2. Enabling SSI Via htaccess 通过htaccess允许SSI(Server Side Including)功能
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    Options Indexes FollowSymLinks Includes
    DirectoryIndex index.shtml index.html

  3. Blocking users by IP 依照IP阻止客户访谈
    order allow,deny
    deny from 123.45.6.7
    deny from 12.34.5. (整个C类地址)
    allow from all

  4. Blocking users/sites by referrer 依照referrer阻止顾客/站点访谈
    需要mod_rewrite模块
    例1. 阻碍单一referrer: badsite.com
    RewriteEngine on
    # Options +FollowSymlinks
    RewriteCond %{HTTP_REFERER} badsite.com [NC]
    RewriteRule .* - [F]
    例2. 阻拦多少个referrer: badsite1.com, badsite2.com
    RewriteEngine on
    # Options +FollowSymlinks
    RewriteCond %{HTTP_REFERER} badsite1.com [NC,OR]
    RewriteCond %{HTTP_REFERER} badsite2.com
    RewriteRule .* - [F]
    [NC] - 大小写不灵敏(Case-insensite)
    [F] - 403 Forbidden
    只顾上述代码注释掉了”Options +FollowSymlinks”那一个讲话。借使服务器未在 httpd.conf 的 段落设置 FollowSymLinks, 则须要丰裕那句,不然会获得”500 Internal Server error”错误。

  5. Blocking bad bots and site rippers (aka offline browsers) 阻止坏爬虫和离线浏览器
    需要mod_rewrite模块
    坏爬虫? 举个例子一些抓垃圾email地址的爬虫和不坚守robots.txt的爬虫(如baidu?)
    能够依赖 HTTP_USER_AGENT 来判定它们
    (不过还大概有更可耻的如”中搜 zhongsou.com”之流把温馨的agent设置为 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)” 太流氓了,就无法了)
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:craftbot@yahoo.com [OR]
    RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
    RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Download Demon [OR]
    RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
    RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
    RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
    RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [OR]
    RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
    RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
    RewriteCond %{HTTP_USER_AGENT} ^flashGet [OR]
    RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
    RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
    RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
    RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
    RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [OR]
    RewriteCond %{HTTP_USER_AGENT} Indy Library [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [OR]
    RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
    RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [OR]
    RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
    RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [OR]
    RewriteCond %{HTTP_USER_AGENT} ^MIDown tool [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
    RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
    RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
    RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Net Vampire [OR]
    RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [OR]
    RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [OR]
    RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
    RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
    RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
    RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
    RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
    RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
    RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
    RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
    RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [OR]
    RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Website Quester [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
    RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Zeus
    RewriteRule ^.* - [F,L]
    [F] - 403 Forbidden
    [L] - ?

  6. Change your default directory page 改换缺省目录页面
    DirectoryIndex index.html index.php index.cgi index.pl

  7. Redirects 转向
    单个文件
    Redirect /old_dir/old_file.html
    全总目录
    Redirect /old_dir
    效果: 就好像将引得移动地方同样
    [url] -> ]
    [url] -> ]
    Tip: 使用客商目录时Redirect无法转化的消除方法
    当你利用Apache私下认可的顾客目录,如 :
    Redirect /jump
    不容置疑的办法是改成
    Redirect /~windix/jump
    (source: .htaccess Redirect in “Sites” not redirecting: why?
    )

  8. Prevent viewing of .htaccess file 防止.htaccess文件被翻动
    order allow,deny
    deny from all

  9. Adding MIME Types 添加 MIME 类型
    AddType application/x-shockwave-flash swf
    Tips: 设置类型为 application/octet-stream 将唤起下载

  10. Preventing hot linking of images and other file types 防盗链
    需要mod_rewrite模块
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^ [NC]
    RewriteRule .(gif|jpg|js|css)$ - [F]
    解析:
    若 HTTP_REFERE君越 非空 (来源为其它站点,非直接连接) 何况
    若 HTTP_REFERE奥迪Q5 非(www.)mydomain.com开首(忽略大小写[NC]) (来源非本站)
    对此全体含有 .gif/.jpg/.js/.css 结尾的文书给出 403 Forbidden 错误[F]
    也可钦命响应,如下例展现替换图片
    RewriteRule .(gif|jpg)$
    [R,L]
    [R] - 转向(Redirect)
    [L] - 连接(Link)

【重写准绳的选取条件】
除非当顾客的WEB乞请最后被导向到某台WEB服务器的Apache后台,则那台WEB服务器接受进来的伸手,依据铺排文件该央浼是主配置可能虚构主机,再依照客户在浏览器中呼吁的UEscortI来配成对重写法则并且依照实际的乞求路线配成对.htaccess中的重写法则。最终把央浼的内容传回给顾客,该响应可能有二种:

  1. 对浏览器诉求内容的表面重定向(Redirect)到另四个U大切诺基L。让浏览器再一次以新的U奥迪Q5I发出央求(XC60=301要么奥迪Q5=302,有时的或许永远的重定向)
    如:多个网址有正式的U冠道L和小名U奥迪Q3L,对小名UPRADOL举办重定向到正规U昂科拉L,可能网址更动到了新的域名则把旧的域名重定向到新的域名(Redirect)

  2. 也大概是由Apache内部子供给代理发生新的故事情节送回给顾客[P,L]那是Apache内部依据重写后的U奥迪Q7I内部通过代办模块央浼内容并送回内容给客商,而客商端浏览器并不知道,浏览器中的ULANDI不会被重写。但其实内容被Apache依据重写法规后的U凯雷德I获得。
    如:在集团防火墙上运维的Apache运行这种代理重写法规,代理对里面网段上的WEB服务器的央求。

【重写法规如何专业?】
我们假若在编写翻译Apache时曾经把mod_rewrite编写翻译成模块,确信你的httpd.conf中有LoadModule rewrite_module libexec/mod_rewrite.so并且在Addmodule中有Addmodule mod_rewrite.c则足以应用重写法规。
当外界恳求来到Apache,Apache调用重写法则中的定义来重写由客户浏览器钦定乞求的U凯雷德I,最终被重写的UQashqaiI要是是重定向,则送由浏览器作再二回呼吁;若是是代理则把重写后的UEvoqueI交给代理模块央求最后的原委(Content),最终把内容送回给浏览器。

【Apache】

1.检验Apache是不是帮助mod_rewrite:LoadModule rewrite_module
2.让apache服务器帮衬.htaccess
Options FollowSymLinks
AllowOverride None
改为
Options FollowSymLinks
AllowOverride All

Rewirte重要的职能便是兑现ULacrosseL的跳转,它的正则表达式是依照Perl语言。可依据服务器级的(httpd.conf)和目录级的(.htaccess) 二种方式:

措施有二种一种是编写翻译apache的时候就径直设置rewrite模块,另一种是编写翻译apache时以DSO格局安装apache,然后再使用源码和apxs来安装rewrite模块。

依靠服务器级的(httpd.conf)有二种艺术,

一种是在httpd.conf的大局下直接利用RewriteEngine on来开发rewrite功用;
NameVirtualHost 192.168.100.8:80
ServerAdmin webmaster@colorme.com.cn
DocumentRoot "/web/webapp"
ServerName www.colorme.com.cn
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.colorme.com.cn [NC]
RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.colorme.com.cn/ [L]
一种是在一些里选拔RewriteEngine on来张开rewrite作用。

上边是三个独立的htaccess文件

开启URL重写

RewriteEngine on

UTiguanL重写的功能域

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:终止一多种的RewriteCond和RewriteRule
R:触发一个来得的跳转,也足以钦定跳转类型,如[R=301]
F:禁绝查看特定文件,apache会触发403张冠李戴

【Nginx】

见NGINX文档

【IIS】
下载http://www.helicontech.com/download/isapi_rewrite/ISAPI_Rewrite3_0056_Lite.msi
打开C:Program FilesHeliconISAPI_Rewrite3httpd.conf
选学

【例子】

图片防盗链

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^) [NC]

RewriteRule .(gif|jpg|png)$ - [F]

网站晋级的时候,独有一定IP才干访谈,别的的客户将见到四个调升页面

RewriteEngine on
RewriteCond %{REQUEST_URI} !/upgrade.html$
RewriteCond %{REMOTE_HOST} !^24.121.202.30
RewriteRule $ http://www.nbphp.com/upgrade.html

[R=302,L]

把老的域名转向新域名

redirect from old domain to new domain

RewriteEngine On
RewriteRule

^(.*)$http://www.yourdomain.com/$1[R=301,L]

引出错误文书档案的目录

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 404 http://yoursite/errors/notfound.html
ErrorDocument 401 “Authorization Required
常见HTTP状态码
Successful Client Requests
200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content
Client Request Redirected
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
Client Request Errors
400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
Server Errors
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
5.2 Blocking users by IP 根据IP阻止客户访问
order allow,deny
deny from 123.45.6.7
deny from 12.34.5. (整个C类地址)

allow from all

设置暗中认可首页

serve alternate default index page

DirectoryIndex about.html

把一些老的链接转到新的链接上——寻找引擎优化SEO

Redirect 301 /d/file.htmlhttp://www.htaccesselite.com/r/file.html

为服务器管理员设置电子邮件。

ServerSignature EMail
SetEnv

SERVER_ADMINdefault@domain.com

Password Protection 密码珍贵

Official document: Authentication, Authorization and Access Control
借使密码文件为.htpasswd
AuthUserFile /usr/local/safedir/.htpasswd (这里不可不使用成套径名)
AuthName EnterPassword
AuthType Basic
二种常见验证办法:
Require user windix
(仅同意顾客windix登入)
Require valid-user
(全部合法客户都可登入)
Tip: 怎样变化密码文件
使用htpasswd命令(apache自带)
先是次生成必要成立密码文件
htpasswd -c .htpasswd user1
其后扩展新客户

htpasswd .htpasswd user2

Enabling SSI Via htaccess 通过htaccess允许SSI(Server Side

Including)功能

AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes

DirectoryIndex index.shtml index.html

Blocking users by IP 依照IP阻止顾客访谈

order allow,deny
deny from 123.45.6.7
deny from 12.34.5. (整个C类地址)

allow from all

Blocking users/sites by referrer 根据referrer阻止顾客/站点访谈

例1. 阻挠单一referrer: badsite.com
RewriteEngine on

Options +FollowSymlinks

RewriteCond %{HTTP_REFERER} badsite.com [NC]
RewriteRule .* - [F]
例2. 阻碍五个referrer: badsite1.com, badsite2.com
RewriteEngine on

Options +FollowSymlinks

RewriteCond %{HTTP_REFERER} badsite1.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2.com
RewriteRule .* - [F]
[NC] - 大小写不敏感(Case-insensite)
[F] - 403 Forbidden
稳重上述代码注释掉了”Options +FollowSymlinks”这一个讲话。假设服务器未在 httpd.conf 的 段落设置 FollowSymLinks, 则需求丰盛那句,不然会猎取”500

Internal Server error”错误。

Blocking bad bots and site rippers (aka offline browsers)

阻碍坏爬虫和离线浏览器

需要mod_rewrite模块
坏爬虫? 举例一些抓垃圾email地址的爬虫和不服从robots.txt的爬虫(如baidu?)
能够依赖 HTTP_USER_AGENT 来判定它们
(可是还也可能有更可耻的如”中搜 zhongsou.com”之流把团结的agent设置为 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)” 太流氓了,就不能了)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
[F] - 403 Forbidden

[L] - 连接(Link)

Change your default directory page 改造缺省目录页面

DirectoryIndex index.html index.php index.cgi index.pl

Redirects 转向

单个文件
Redirect /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
漫天目录
Redirect /old_dir http://yoursite.com/new_dir
意义: 就像将引得移动地点同样
http://yoursite.com/old_dir -> http://yoursite.com/new_dir
http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html
Tip: 使用客商目录时Redirect不可能转化的消除措施
当您选择Apache暗中同意的客户目录,如 http://mysite.com/~windix,当您想转向 http://mysite.com/~windix/jump时,你会开采上边那些Redirect不办事:
Redirect /jump http://www.google.com
没有错的法子是改成
Redirect /~windix/jump http://www.google.com
(source: .htaccess Redirect in “Sites” not redirecting: why?

)

Prevent viewing of .htaccess file 防止.htaccess文件被翻动

order allow,deny
deny from all
Adding MIME Types 添加 MIME 类型
AddType application/x-shockwave-flash swf

Tips: 设置类型为 application/octet-stream 将唤起下载

Preventing hot linking of images and other file types 防盗链

需要mod_rewrite模块
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^) [NC]
RewriteRule .(gif|jpg|js|css)$ - [F]
解析:
若 HTTP_REFERE智跑 非空 (来源为别的站点,非间接连接) 而且
若 HTTP_REFERER 非(www.)mydomain.com开班(忽略大小写[NC]) (来源非本站)
对于有着含有 .gif/.jpg/.js/.css 结尾的文书给出 403 Forbidden 错误[F]
也可钦点响应,如下例呈现替换图片
RewriteRule .(gif|jpg)$ [R,L]
[R] - 转向(Redirect)

[L] - 连接(Link)

Preventing Directory Listing 防止目录列表时展现

IndexIgnore *
IndexIgnore *.jpg *.gif
Tips:
允许目录列表显示: Options +Indexes
禁止目录列表展现: Options -Indexes

来得提示新闻: 页首 文件HEADESportage, 页尾 文件README

限定PHP上传文件大小

那招在分享空间的服务器上很有用,可以让自个儿的客户上传更加大的公文。第贰个是安装最大的上传文件大小,第四个是设置最大的POST乞请大小,第八个PHP脚本最长的施行时间,最后多个是本子深入分析上传文件的最长日子:

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

【基础知识】

htaccess基本语法介绍

敞开重写引擎 :RewriteEngine on
安装重写的根目录:RewriteBase / — 说明:因为定义了这么些文件夹,所以对应的轮换就有了一个参照他事他说加以考察。
相配全部契合条件的诉求:RewriteCond — 表达:RewriteCond

概念了一层层准绳条件,这些命令可以有一条或然多条,唯有客户拿来的url切合那一个法则之后,我们的.htaccess才早先招待,不然客商就一直本身去做客所需求的目录了。

常量

%{HTTP_HOST}表示前段时间作客的网站,只是指前缀部分,格式是www.xxx.com不包括“
%{REQUEST_UEscortI}表示访谈的相对地址,便是周旋根目录的地方,正是域名/前边的成份,格式上囊括最前方的“/”
%{REQUEST_FILENAME}

%{HTTP_REFERER}

==========

正则表达式

[] —— 相称三个字符集结,比方[xyz]能够匹配x, y或许z
[]+ —— 例如[xyz]+会以别的顺序、次数相配x,y,z的产出
[^] —— 字符表示字符集的补集。[xyz]将合营未有x,y可能z的字符串
[a-z] —— 连字符(-)表示相当从字母a到字母z的享有字符串
a{n} —— 钦赐字母a出现的次数为n次,满意该法规时杰出。举个例子x{3}仅与xxx相称
a{n,} —— 钦定字母a出现的次数最少为n次,举例x{3,}能够与xxx恐怕xxxx等协作
a{n,m} —— 钦定a出现的次数起码为n到m次。
() —— 用于将正则表明式分组,满意第一组正则表明式的字符串会被存放在变量$第11中学,依此类推。借使括号中的不是正则表明式,举个例子(perishable)?press 将能够合营有也许尚未perishable前缀的press
^ —— 位于行首。注意:和中括号中的[^]意义不一致。
$ —— 位于行末
? —— 例如 monzas? 会匹配 monza 或者 monzas,而 mon(za)? 会匹配 mon 或者 monza。又如 x? 会匹配“空字符” 或者 一个x
! —— 逻辑非。例如“!string” 将会合作除了“string”以外的具有字符串
. —— 表示任意字符串
– —— 命令Apache“不要”重写URL,例如“xxx.domain.com.* – [F]”

  • —— 般配起码一个随便字符,比方G+相称以G开始、况且前边起码有贰个字符的字符串
  • —— 相称零个或四个字符,比方“.”相配猖狂字符串
    | —— 逻辑“或”,与[OR]不等的是,它只相称字符串,举个例子(x|y)相配x可能y
    —— 转义字符。能够转义左括号( 尖字符^ 美金符号$ 惊叹号! 点. 星号
    管道符号| 右括号) 等
    . —— 转义为点字符(点字符在正则表明式中得以协作任性字符)
    /* —— 零个或七个正斜杠
    .* —— 零个或多少个随机字符(即,相称放肆字符串,满含空字符)
    ^$ —— 匹配“空字符”、“空行”
    ^.$ —— 相称自便字符串(只限一行)
    [^/.] —— 相称既非“正斜杠”亦非“点”的专擅字符
    [^/.]+ —— 相称第几个字符既非“正斜杠”亦非“点”,后继字符能够是“正斜杠”大概“点”的字符串
    http:// —— 匹配“http://”
    ^domain.
    —— 相称以“domain”起初的字符串
    ^domain.com$ —— 仅匹配“domain.com”
    w相配字母或数字或下划线或汉字
    s匹配放肆的空白符
    d相配数字
    b相配单词的发端或终止
    -d —— 测量检验字符串是或不是是已存在的目录
    -f —— 测验字符串是或不是是已存在的文本
    -s —— 测量试验字符串所指文件是还是不是有“非零”值
    注意:
    RewriteRule ^([0-9]+).html?req_id=(.*)$ p.php?id=$1&req_id=$2

?后面部分是不会跻身RewriteRule的,须求用QUE奥迪Q5Y_STCRUISERING变量来获取
需求1:将http://www.baidu.com/test/one.html?name=miko重写为http://www.baidu.com/two.html?name=miko,重写语句如下:
RewriteRule ^test/one.html$ two.html [QSA]

需求2:将http://www.baidu.com/test/one.html?name=miko重写为http://www.baidu.com/miko.html,重写语句如下:
RewriteCond %{QUERY_STRING} ^name=(/w+)$
RewriteRule ^test/one.html %1.html

===================================

Apache mod_rewrite准绳重写的表爱他美(Dumex)览

  1. R[=code](force redirect) 强制外界重定向 强制在代表字符串加上http://thishost[:thisport]/前缀重定向到表面包车型客车UEscortL.假若code不钦赐,将用缺省的302 HTTP状态码。

  2. F(force URL to be forbidden)禁用URL,返回403HTTP状态码。

  3. G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。

  4. P(force proxy) 强制行使代理转发。

  5. L(last rule) 阐明当前法规是终极一条准则,截至深入分析今后法则的重写。

  6. N(next round) 重新从第一条准绳开头运转重写进程。

  7. C(chained with next rule) 与下一条准绳关联 假诺规则相配则符合规律管理,该标记无效,如若不相称,那么下边全体涉及的准则都跳过。

  8. T=MIME-type(force MIME type) 强制MIME类型

  9. NS (used only if no internal sub-request) 只用于不是内部子央浼

  10. NC(no case) 不区分轻重缓急写

  11. QSA(query string append) 追加央求字符串

  12. NE(no UENCOREI escaping of output) 不在输出转义特殊字符比方:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE]将能准确的将/foo/zoo转变来/bar?arg=P1=zed

  13. PT(pass through to next handler) 传递给下贰个管理比方:RewriteRule ^/abc(.*) /def$1 [PT] # 将会提交/def准绳管理Alias /def /ghi

  14. S=num(skip next rule(s)) 跳过num条规则

  15. E=VAWrangler:VAL(set environment variable) 设置遭受变量

本文由今晚最快开奖现场直播发布于关于计算机,转载请注明出处:重写规则

关键词:

在Linux防火墙上编译Apache

目标: 一台Redhat linux 6.2 用为防火墙,专线连结Chinanet,对内连结     局域网段192.168.11.0/24,需求enable PHP4和Mysql数据库...

详细>>

PHP中的数据转变,php数据类型调换学习笔记

常用的数据类型有字符串型、浮点型(单精度浮点型float、双精度浮点型double)、整形、布尔型 PHP的数据类型转变属...

详细>>

php中利用cookie来保存客商登入音讯的贯彻代码,

PHP setcookie() 函数向客商端发送二个 HTTP cookie。cookie是由服务器发送到浏览器的变量。cookie平日是服务器嵌入到客户...

详细>>

字符串替换为星号或其余字符,php手提式有线电

正则表明式方法 手提式有线电电话机号码字符串替换为星号代码: 1、字符串中包括八个手提式有线电电话机号码  ...

详细>>