伪静态IIS与Apache的配置htacess的规则.docx

上传人:b****2 文档编号:24579471 上传时间:2023-05-29 格式:DOCX 页数:18 大小:27.81KB
下载 相关 举报
伪静态IIS与Apache的配置htacess的规则.docx_第1页
第1页 / 共18页
伪静态IIS与Apache的配置htacess的规则.docx_第2页
第2页 / 共18页
伪静态IIS与Apache的配置htacess的规则.docx_第3页
第3页 / 共18页
伪静态IIS与Apache的配置htacess的规则.docx_第4页
第4页 / 共18页
伪静态IIS与Apache的配置htacess的规则.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

伪静态IIS与Apache的配置htacess的规则.docx

《伪静态IIS与Apache的配置htacess的规则.docx》由会员分享,可在线阅读,更多相关《伪静态IIS与Apache的配置htacess的规则.docx(18页珍藏版)》请在冰豆网上搜索。

伪静态IIS与Apache的配置htacess的规则.docx

伪静态IIS与Apache的配置htacess的规则

伪静态IIS与Apache的配置

^t_(\d+).html$t.php?

id=$1

这个在apache下面可以,但在iis下的isapi_rewrite里可能就不对了

要改成^(.*)/t_(\d+).html$$1/t.php\?

id=$2

加了/,和对?

进行了转义

Apache下

RewriteRule^company/show_([0-9]+).html$company.php?

uid=$1[L]//正确,可以不转义.?

RewriteRule^company/show_([0-9]+)\.html$company.php\?

uid=$1[L]//正确

RewriteRule^/company/show_([0-9]+)\.html$/company.php\?

uid=$1[L]//错误加了/就不行了

IIS下

RewriteRule^(.*)/resume/([0-9]+)/show\.html$/$1/person.php?

pid=$2[L]//正确

RewriteRule^(.*)/resume/([0-9]+)/show.html$/$1/person.php?

pid=$2[L]//错误,.?

必须转义

RewriteRule/resume/([0-9]+)/show\.html$/person.php\?

pid=$1[L]//正确

RewriteRuleresume/([0-9]+)/show\.html$person.php\?

pid=$1[L]//错误,必须加/

RewriteRule/resume/([0-9]+)/show\.html$/person.php?

pid=$1[L]//错误,?

必须转义

总结iis下必须加/,.?

必须转义

apache下不能加/

附上htaccess的标记说明

flags

‘redirect|R[=code]‘(强制重定向redirect)

以http:

//thishost[:

thisport]/(使新的URL成为一个URI)为前缀的Substitution可以强制性执行一个外部重定向。

如果code没有指定,则产生一个HTTP响应代码302(临时性移动)。

如果需要使用在300-400范围内的其他响应代码,只需在此指定这个数值即可,另外,还可以使用下列符号名称之一:

temp(默认的),permanent,seeother.用它可以把规范化的URL反馈给客户端,如,重写“/~”为“/u/”,或对/u/user加上斜杠,等等。

注意:

在使用这个标记时,必须确保该替换字段是一个有效的URL!

否则,它会指向一个无效的位置!

并且要记住,此标记本身只是对URL加上http:

//thishost[:

thisport]/的前缀,重写操作仍然会继续。

通常,你会希望停止重写操作而立即重定向,则还需要使用’L’标记.

‘forbidden|F’(强制URL为被禁止的forbidden)

强制当前URL为被禁止的,即,立即反馈一个HTTP响应代码403(被禁止的)。

使用这个标记,可以链接若干RewriteConds以有条件地阻塞某些URL。

‘gone|G’(强制URL为已废弃的gone)

强制当前URL为已废弃的,即,立即反馈一个HTTP响应代码410(已废弃的)。

使用这个标记,可以标明页面已经被废弃而不存在了.

‘proxy|P’(强制为代理proxy)

此标记使替换成分被内部地强制为代理请求,并立即(即,重写规则处理立即中断)把处理移交给代理模块。

你必须确保此替换串是一个有效的(比如常见的以http:

//hostname开头的)能够为Apache代理模块所处理的URI。

使用这个标记,可以把某些远程成分映射到本地服务器名称空间,从而增强了ProxyPass指令的功能。

注意:

要使用这个功能,代理模块必须编译在Apache服务器中。

如果你不能确定,可以检查“httpd-l”的输出中是否有mod_proxy.c。

如果有,则mod_rewrite可以使用这个功能;如果没有,则必须启用mod_proxy并重新编译“httpd”程序。

‘last|L’(最后一个规则last)

立即停止重写操作,并不再应用其他重写规则。

它对应于Perl中的last命令或C语言中的break命令。

这个标记可以阻止当前已被重写的URL为其后继的规则所重写。

举例,使用它可以重写根路径的URL(’/’)为实际存在的URL,比如,‘/e/www/’.

‘next|N’(重新执行nextround)

重新执行重写操作(从第一个规则重新开始).这时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理的URL。

它对应于Perl中的next命令或C语言中的continue命令。

此标记可以重新开始重写操作,即,立即回到循环的头部。

但是要小心,不要制造死循环!

‘chain|C’(与下一个规则相链接chained)

此标记使当前规则与下一个(其本身又可以与其后继规则相链接的,并可以如此反复的)规则相链接。

它产生这样一个效果:

如果一个规则被匹配,通常会继续处理其后继规则,即,这个标记不起作用;如果规则不能被匹配,则其后继的链接的规则会被忽略。

比如,在执行一个外部重定向时,对一个目录级规则集,你可能需要删除“.www”(此处不应该出现“.www”的)。

‘type|T=MIME-type’(强制MIME类型type)

强制目标文件的MIME类型为MIME-type。

比如,它可以用于模拟mod_alias中的ScriptAlias指令,以内部地强制被映射目录中的所有文件的MIME类型为“application/x-httpd-cgi”.

‘nosubreq|NS’(仅用于不对内部子请求进行处理nointernalsub-request)

在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。

比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时,Apache会内部地产生子请求。

对子请求,它不一定有用的,而且如果整个规则集都起作用,它甚至可能会引发错误。

所以,可以用这个标记来排除某些规则。

根据你的需要遵循以下原则:

如果你使用了有CGI脚本的URL前缀,以强制它们由CGI脚本处理,而对子请求处理的出错率(或者开销)很高,在这种情况下,可以使用这个标记。

‘nocase|NC’(忽略大小写nocase)

它使Pattern忽略大小写,即,在Pattern与当前URL匹配时,’A-Z’和’a-z’没有区别。

‘qsappend|QSA’(追加请求串querystringappend)

此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。

如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。

‘noescape|NE’(在输出中不对URI作转义noURIescaping)

此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。

一般情况下,特殊字符(如’%’,‘$’,‘;’等)会被转义为等值的十六进制编码。

此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,如:

RewriteRule/foo/(.*)/bar?

arg=P1\%3d$1[R,NE]

可以使’/foo/zed’转向到一个安全的请求’/bar?

arg=P1=zed’.

‘passthrough|PT’(移交给下一个处理器passthrough)

此标记强制重写引擎将内部结构request_rec中的uri字段设置为filename字段的值,它只是一个小修改,使之能对来自其他URI到文件名翻译器的Alias,ScriptAlias,Redirect等指令的输出进行后续处理。

举一个能说明其含义的例子:

如果要通过mod_rewrite的重写引擎重写/abc为/def,然后通过mod_alias使/def转变为/ghi,可以这样:

RewriteRule^/abc(.*)/def$1[PT]

Alias/def/ghi

如果省略了PT标记,虽然mod_rewrite运作正常,即,作为一个使用API的URI到文件名翻译器,它可以重写uri=/abc/…为filename=/def/…,但是,后续的mod_alias在试图作URI到文件名的翻译时,则会失效。

注意:

如果需要混合使用不同的包含URI到文件名翻译器的模块时,就必须使用这个标记。

混合使用mod_alias和mod_rewrite就是个典型的例子。

ForApachehackers

如果当前ApacheAPI除了URI到文件名hook之外,还有一个文件名到文件名的hook,就不需要这个标记了!

但是,如果没有这样一个hook,则此标记是唯一的解决方案。

ApacheGroup讨论过这个问题,并在Apache2.0版本中会增加这样一个hook。

’skip|S=num’(跳过后继的规则skip)

此标记强制重写引擎跳过当前匹配规则后继的num个规则。

它可以实现一个伪if-then-else的构造:

最后一个规则是then从句,而被跳过的skip=N个规则是else从句.(它和’chain|C’标记是不同的!

‘env|E=VAR:

VAL’(设置环境变量environmentvariable)

此标记使环境变量VAR的值为VAL,VAL可以包含可扩展的反向引用的正则表达式$N和%N。

此标记可以多次使用以设置多个变量。

这些变量可以在其后许多情况下被间接引用,但通常是在XSSI(viaorCGI(如$ENV{’VAR’})中,也可以在后继的RewriteCond指令的pattern中通过%{ENV:

VAR}作引用。

使用它可以从URL中剥离并记住一些信息。

‘cookie|CO=NAME:

VAL:

domain[:

lifetime[:

path]]’(设置cookie)

它在客户端浏览器上设置一个cookie。

cookie的名称是NAME,其值是VAL。

domain字段是该cookie的域,比如’.apache.org’,可选的lifetime是cookie生命期的分钟数,可选的path是cookie的路径。

下面是htacess的配置

htaccess可以做大量范围的事情,包括:

文件夹密码保护、用户自动重新指向、自定义错误页面、变更你的文件扩展名、屏蔽特定的用户IP地址、只允许特定的IP地址、停止目录表以及使用其他文件作为index文件,等等......

1.Introduction介绍

文件名.htaccess属性644(RW-R–R–)

htaccess会影响它所在目录下的所有子目录

注意大多数内容都要求保持在一行之内,不要换行,否则会引起错误

2.ErrorDocuments错误文档

Officialdocument:

ErrorDocumentDirective

ErrorDocumentcodedocument

例子

ErrorDocument400/errors/badrequest.html

ErrorDocument404http:

//yoursite/errors/notfound.html

ErrorDocument401“AuthorizationRequired”

more..

less..(注意之后内容如果出现的双引号需要转义为\”)

常见HTTP状态码

SuccessfulClientRequests

200OK

201Created

202Accepted

203Non-AuthorativeInformation

204NoContent

205ResetContent

206PartialContent

ClientRequestRedirected

300MultipleChoices

301MovedPermanently

302MovedTemporarily

303SeeOther

304NotModified

305UseProxy

ClientRequestErrors

400BadRequest

401AuthorizationRequired

402PaymentRequired(notusedyet)

403Forbidden

404NotFound

405MethodNotAllowed

406NotAcceptable(encoding)

407ProxyAuthenticationRequired

408RequestTimedOut

409ConflictingRequest

410Gone

411ContentLengthRequired

412PreconditionFailed

413RequestEntityTooLong

414RequestURITooLong

415UnsupportedMediaType

ServerErrors

500InternalServerError

501NotImplemented

502BadGateway

503ServiceUnavailable

504GatewayTimeout

505HTTPVersionNotSupported

3.PasswordProtection密码保护

Officialdocument:

Authentication,AuthorizationandAccessControl

假设密码文件为.htpasswd

AuthUserFile/usr/local/safedir/.htpasswd(这里必须使用全路径名)

AuthNameEnterPassword

AuthTypeBasic

两种常见验证方式:

Requireuserwindix

(仅允许用户windix登陆)

Requirevalid-user

(所有合法用户都可登陆)

Tip:

如何生成密码文件

使用htpasswd命令(apache自带)

第一次生成需要创建密码文件

htpasswd-c.htpasswduser1

之后增加新用户

htpasswd.htpasswduser2

4.EnablingSSIViahtaccess通过htaccess允许SSI(ServerSideIncluding)功能

AddTypetext/html.shtml

AddHandlerserver-parsed.shtml

OptionsIndexesFollowSymLinksIncludes

DirectoryIndexindex.shtmlindex.html

5.BlockingusersbyIP根据IP阻止用户访问

orderallow,deny

denyfrom123.45.6.7

denyfrom12.34.5.(整个C类地址)

allowfromall

6.Blockingusers/sitesbyreferrer根据referrer阻止用户/站点访问

需要mod_rewrite模块

例1.阻止单一referrer:

RewriteEngineon

#Options+FollowSymlinks

RewriteCond%{HTTP_REFERER}badsite\.com[NC]

RewriteRule.*-[F]

例2.阻止多个referrer:

RewriteEngineon

#Options+FollowSymlinks

RewriteCond%{HTTP_REFERER}badsite1\.com[NC,OR]

RewriteCond%{HTTP_REFERER}badsite2\.com

RewriteRule.*-[F]

[NC]-大小写不敏感(Case-insensite)

[F]-403Forbidden

注意以上代码注释掉了”Options+FollowSymlinks”这个语句。

如果服务器未在httpd.conf的段落设置FollowSymLinks,则需要加上这句,否则会得到”500InternalServererror”错误。

7.Blockingbadbotsandsiterippers(akaofflinebrowsers)阻止坏爬虫和离线浏览器

需要mod_rewrite模块

坏爬虫?

比如一些抓垃圾email地址的爬虫和不遵守robots.txt的爬虫(如baidu?

可以根据HTTP_USER_AGENT来判断它们

(但是还有更无耻的如”中搜”之流把自己的agent设置为“Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)”太流氓了,就无能为力了)

RewriteEngineOn

RewriteCond%{HTTP_USER_AGENT}^BlackWidow[OR]

RewriteCond%{HTTP_USER_AGENT}^Bot\mailto:

craftbot@[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_A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1