在所要禁止的目录中的.htaccess文件中添加一下两行代码,开发者和程序员通过它来改变Apache

http://apps.hi.baidu.com/share/detail/19465970

此文章转发~


你领会Apache是怎么布置的啊?本文为您讲述Apache的安全安排,希望对你拥有辅助。

Apache伪静态(Rewrite).htaccess文件详解

最简便方法,在所要禁止的目录中的.htaccess文件中添加一下两行代码。

 ca88亚洲城网站 1

Htaccess(超文本访问)是一个简单易行的配备文件,它同意设计师,开发者和程序员通过它来改变Apache
Web服务器的安顿。

order allow,deny
deny from all

1 安全策略

这一个成效包蕴用户重定向、URL重写(url
rewrite,国内许多叫作伪静态)、目录密码爱慕。

(可以把all换成某一ip地址)

1.1 安全目录

现行大家早先——


.htaccess做目录安全保安的,欲读取这尊敬的目录需要先键入正确用户帐号与密码。那样可做为专门管理网页存放的目录或做为会员区等。

1 建立并上传一个.htaccess文本

【.htaccess简介】
.htaccess文件,又叫分布式配置文件,它提供了针对各类目录改变配置的艺术,可以在一个一定的文档目录中放置一个分包指令的公文,以达到控制此目录及其子目录的指标。通
常.htaccess文件的施用布署语法和主配置文件一律,可是做为用户,当然所能使用的吩咐是惨遭限制的。系统管理员可以透过配备apache的AllowOverride指令来布置决
定.htaccess文件中如何指令有效。倘诺在文档的子目录中还安装了.htaccess文件的话,子目录中的指令将会覆盖掉上级目录或者主服务器配置文件中的指令。此采用尤其是ISP在
同一个机器上运行了多少个用户站点,而又愿意用户可以协调改变配置的状态下越发有含义。

AllowOverride All

建立一个.htaccess文书很简短,我们选拔一个好像windows的记事本或者notpad++都可以,然后把”自动换行”效用关闭,然后写入一些字后保存文件。

【.htaccess应用】
1、错误文档的固定
广大的客户端请求错误再次回到代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
周边的服务器错误再次来到代码:
500 Internal Server Error
大家可以利用.htaccess指定自己先行制作好的不当提示页面。例如:
ErrorDocument 404 /help/errors/notfound.html
ErrorDocument 500 /help/errors/internalerror.html
ErrorDocument 错误代码 /目录名/文件名.伸张名
本来假如提醒的音信很少的话,大家一直使用html就行了,如:
ErrorDocument 404 “Sorry the page you access is not exist”
如上命令等同于
<Directory /路径>
ErrorDocument 404 “Sorry the page you access is not exist”
</Directory>
2、使用服务器认证
要利用.htaccess对某个目录下的文档设定访问用户和相应的密码,首先要做的是生成一个.htpasswd的文本文档,使用
htpasswd -c d:/passwords wwq
输入用户密码即可生成.htpasswd的文本文档
在.htaccess文件中参加:
AuthType Basic
AuthName “Restricted Files”
AuthUserFile d:/passwords
Require user wwq
上述只允许用户wwq访问目录
同意三个人走访则必须建立一个组文件以确定组中的用户,其格式很简短,可以用你喜欢的编辑器建立,例如:
admin: wwq
editer: lily baty
本身将它保存为d:/下的groups文件
行使htpasswd d:/passwords lily(htpasswd d:/passwords
groups)为编辑组添加三个用户
修改.htaccess:
AuthType Basic
AuthName “By Invitation Only”
AuthUserFile d:/passwords
AuthGroupFile d:/groups
Require group admin editer
本来也可以利用Require
valid-user指令允许密码文件中的所有用户选用科学的密码举办访问。
3、拒绝来自某个IP的走访
order allow,deny
deny from 205.252.46.165 #拒绝ip地址为205.252.46.165的访问
deny from 219.5.45. #拒绝ip地址段为219.5.45.1-255的拜访
deny from cyberthugs.com moreidiots.com
#拒绝域名为cyberthugs.com、moreidiots.com的造访
allow from all
比方想禁止所有访问,则足以动用deny from all指令落成。
一经只想指定域名的造访则运用如下指令:
Order deny,allow
Deny from all #必须有那句,否则不起功能
Allow from dev.example.com #只允许dev.example.com的访问
只允许地方访问
Order deny,allow
Deny from all
Allow from 127.0.0.1
4、保护.htaccess文档
设若在从前的老版本的apache中,直接用http://www.dd.com/www/.htaccess可能将站点的.htaccess文件获取,通过它可以得到包含了密码文件的路径。不过现在这个在apache2中
接近就是剩下的了。不过我们仍然得以在.htaccess文件中投入如下指令,那样就可以将.htaccess尊敬起来。
<Files .htaccess>
order allow,deny
deny from all
</Files>

5、url转向和ssi包含
有这几个人都问我,我的站是租用外人的虚拟主机啊,怎么用越发url重写和ssi啊,是或不是无法用啊,其实也不是不可以用,用.htaccess就可以已毕,当然前提是您的劳务提供商允许
啦。
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
就足以选取服务器端包括啦
应用Redirect指令完结URL转向:
Redirect /旧目录/旧文档名 新文档的地方
依旧全体目录的倒车: Redirect 旧目录 新目录
例如:Redirect /www/ http://localhost/test/
6、防止盗链
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www/.)?域名.com/.\*$ [NC]
ca88亚洲城网站,RewriteRule /.(gif|jpg)$ – [F]
依旧用图形代替之
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www/.)?域名.com/.\*$ [NC]
RewriteRule /.(gif|jpg)$ http://www.域名.com/替代图片文件名 [R,L]
【使用.htaccess文件的供不应求】
1、性能
AllowOverride启用了使用.htaccess文件,则apache必要在各样目录中查找.htaccess文件。因而会导致性能下落。此外对每一个呼吁,都急需读取一次.htaccess文本,还有
apache必须在具备上级的目录中查找.htaccess文件以使有效的指令都起效果,比如借使客户端请求/www/htdocs/help中的页面。服务器必须寻找
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess
多少个附加文(加文)件(固然这一个文件都不设有,当然你可以独自允许根目录使用.htaccess文件),也就是说目录深度越深,则做客的附加文件越多,性能越低了。
2、安全
是因为在/www/htdocs/help上边的.htaccess文件中放置指令与在主配置文件中<Directory
/www/htdocs/help>中放置相同的通令是完全相同的,那样允许用户自己修改服务器配置,
恐怕就会造成某些不乐意暴发的意外的修改,这样就会导致服务器安全问题。那样您就非得考虑是否设置AllowOverride
None来完全禁用.htaccess文件。

LoadModule rewrite_module modules/mod_rewrite.so

譬如,我们得以起名为:


在自行要表明的目录下建立. htaccess文本(windows中用记事本另存为建立)

htaccess.txt

一 开启Mod_rewrite模块

1.1.1 .htaccess配置:

上传到Web服务器上的有关目录的公文,然后重新命名:

打开Apache2\conf\httpd.conf
搜索 LoadModule rewrite_module modules/mod_rewrite.so
(Apache2是这个)
免去后边的#

(.htaccess文件可以一定于当前目录的httpd.conf配置,设置时尤其注意.htaccess文件的造访权限,幸免被细心恶意修改,后果神乎其神)

.htaccess

搜索AllowOverride None 替换为 AllowOverride All

AuthName HIHIHI指的是必要您输入用户名和密码时的提示新闻

记住.htaccess文件应该使用644权力,并以ASCII形式上传。若是.htaccess文件,那么应该联系系统管理员或托管集团,并保障他们已启用.htaccess文件。

有少数个找到和底下代码类似的相当

AuthType Basic表示必要的表达项目

一经想在本土Apache开启.htaccess,可按以下步骤举行:

</IfModule>

AuthUserFile
c:\ss指的是保存用户名和密码的公文地方(.htpasswd),在这些事例中指的是.htpasswd文件,地方和大家的.htaccess文件一律

事实上如若修改一下apache目录下的httpd.conf文件,大家用文件编辑器打开后,把以下行去掉注释

#
# “D:\usr\local\Apache2\cgi-bin” should be changed to whatever your
ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory “D:\usr\local\Apache2\cgi-bin”>
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>

Require valid-user指定只有.htpasswd文件包涵的法定用户才能访问。

LoadModule rewrite_module modules/mod_rewrite.so

二 在Apache2\conf\httpd.conf 最终一行添加

1.1.2 .htpasswd配置

然后搜索:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
</IfModule>

用户名:密码

Options FollowSymLinks
AllowOverride None

 

aaa:aaa

改为

 

不必然在.htaccess文件下安插,也可以在httpd.conf(主配置)下进展布局,那样可以拉长apache工作效用,否则客户端访问Web是Apache都会在每一个索引下寻找.htaccess文件,会稳中有降Apache效能,而且.htaccess被精心修改了就危险了

Options FollowSymLinks
AllowOverride All

1.2 错误页面

回忆修改完httpd.conf保存未来,一定要重启Apache服务器才可生效。

ErrorDocument 500 “The server made a boo boo.”

2|.httacces文件的布置

ErrorDocument 404 /missing.html

2.1.配置.htaccess 自定义错误页

ErrorDocument 404 “/cgi-bin/missing_handler.pl”

自己要介绍的.htaccess的首个利用是自定义错误页面,那将使您可以具备自己的、个性化的荒唐页面(例如找不到文件时),而不是您的服务商提供的错
误页或没有其它页面。那会让你的网站在阴差阳错的时候看上去更标准。你仍是可以动用脚本程序在发生错误的时候公告你(例如我利用Free
Webmaster Help的PHP脚本程序,当找不到页面的时候自动e-mail给自家)。

ErrorDocument 402 http://www.js.com/subscription\_info.html

您所精通的其余页面错误代码(像404找不到页面),都足以因此在.htaccess文件里投入下边的文字将其成为自定义页面:

2 安全隐患

ErrorDocument errornumber /file.html

2.1 目录败露

举例来说,倘若本身的根目录下有一个nofound.html文件,我想拔取它当作404
error的页面

<Directory “/usr/local/apache/htdocs”>

ErrorDocument 404 /notfound.html

Options -Indexes FollowSymLinks

一经文件不在网站的根目录下,你只必要把路子设置为:

AllowOverrride None

ErrorDocument 500 /errorpages/500.html

Order allow,deny

以下是有些最常用的荒唐:

Allow from all

常用的客户端请求错误再次来到代码:

</Directory>

400 – Bad request 错误请求

在Indexes前加-或去掉

401 Authorization Required须求表明

2.2 符号连接追踪

403 Forbidden禁止

<Directory “/usr/local/apache/htdocs”>

404 Not Found找不到页面

Options Indexes -FollowSymLinks

405 Method Not Allowed

AllowOverrride None

408 Request Timed Out

Order allow,deny

411 Content Length Required

Allow from all

412 Precondition Failed

</Directory>

413 Request Entity Too Long

在FollowSymLinks前加-或去掉

414 Request URI Too Long

2.3 Listen指令具体化

415 Unsupported Media Type

httpd.conf包蕴一个”Listen
80”指令。应将其更改为指定邦定的IP,如若在多IP的条件下越来越令人瞩目

大规模的服务器错误再次回到代码:

2.4 版本走漏

500 Internal Server Error内部服务器错误

在httpd.conf中添加:

接下去,你要做的只是开创一个荒唐暴发时展现的公文,然后把它们和.htaccess一起上传。

ServerTokens ProductOnly

用户可以利用.htaccess指定自己预先制作好的荒谬提醒页面。一般意况下,人们得以特意开设一个目录,例如errors放置那么些页面。然后再.htaccess中,参与如下的命令:

ServerSignature Off

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

2.5 运行权限

一条指令一行。上述第一条指令的情致是对于404,也就是没有找到所急需的文档的时候得显得页面为/errors目录下的notfound.html页面。简单看出语法格式为:

Apache在windows中的默许运行权限是系统权限,若黑客找到漏洞,就足以将一切服务控制,所以必须将Apache运行权限降到最低,那样可以幸免生出安全事故

ErrorDocument 错误代码 /目录名/文件名.扩张名

2.6 清除httpd.conf中默许的诠释

假定所急需指示的新闻很少的话,不必专程制作页面,直接在指令中利用HTML号了,例如下边那么些事例:

在那400行中,唯有一小部分是实际的Apache指令,其他的仅是扶助用户怎么样适当地在httpd.conf中放置指令的笺注。根据作者的经历,那个注释有时起负面效果,甚至将危险的授命留存于文件中。作者在所管理的不可胜数Apache服务器上校httpd.conf文件复制为任何的文件,如httpd.conf.orig等,然后完全排除多余的诠释。文件变得更其简单阅读,从而更好地解决了神秘的平安问题照旧不当地安顿文件。

ErrorDocument 401 “你没有权力访问该页面,请废弃!”

2.7 欺骗攻击者

2.2.配置.htaccess 停示突显目录列表

修改版本名:

稍微时候,由于某种原因,你的目录里没有index文件,那意味着当有人在浏览器地址栏键入了该目录的门路,该目录下有所的文件都会突显出来,那会给您的网站留下安全隐患。

修改系统名:

为防止那种景况(而不用创制一堆的新index文件),你可以在你的.htaccess文档中键入以下命令,用以阻止目录列表的显得:

2.8 apache解析尾巴:

Options -Indexes

<FilesMatch “.(php.|php3.)”>

2.3. 配置.htaccess 阻止/允许特定的IP地址

Order Allow,Deny

一点情状下,你恐怕只想同意一些特定IP的用户可以访问你的网站(例如:只同意利用一定ISP的用户进入某个目录),或者想封禁
某些特定的IP地址(例如:将低级用户隔离于你的音讯版面外)。当然,那只在您理解你想遏止的IP地址时才有用,但是现在网上的绝大部分用户都施用动态IP
地址,所以那并不是限量使用的常用方法。

Deny from all

你可以运用以下命令封禁一个IP地址:

</FilesMatch>

deny from 000.000.000.000

2.9 apache设置上传目录无执行权限

此处的000.000.000.000是被封禁的IP地址,假诺您只指明了其中的多少个,则可以封禁整个网段的地点。如您输入210.10.56.,则将封禁210.10.56.0~210.10.56.255的具备IP地址。

闭馆路径/www/home/upload的php解析:

您可以选拔以下命令允许一个IP地址访问网站:

<Directory “/www/home/upload”>

allow from 000.000.000.000

<Files ~ “.php”>

被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样封禁整个网段。

Order allow,deny

一旦你想阻止所有人访问该目录,则足以采取:

Deny from all

deny from all

</Files>

但是那并不影响脚本程序行使这些目录下的文档。

</Directory>

2.4.配置.htaccess 替换index文件

2.10 apache限制目录

变动缺省的首页文件

php_admin_value open_basedir /var/www

一般意况下缺省的首页文件名有default、index等。但是,有些时候目录中并未缺省文件,而是某个特定的文件名,比如在w3sky中是
w3sky.PHP。那种意况下,要用户记住文件名来访问很麻烦。在.htaccess中得以随意的设置新的缺省文件名:

2.11 http 请求方法安全

DirectoryIndex 新的缺省文件名

OPTIONS 方法可以检测出当下资源得以请求的章程,关闭该方法的布署:

也得以列出七个,顺序讲明它们之间的优先级别,例如:

<Location />

DirectoryIndex filename.html index.cgi index.pl default.htm portal.php
welcome.php

<Limit OPTIONS>


许你不想一向利用index.htm或index.html作为目录的目录文件。举例来说,假如你的站点使用
PHP 文件,你或许会想行使
index.PHP来作为该目录的目录文档。当然也不必局限于”index”文档,要是你愿意,使用.htaccess你居然可以设置
foofoo.balh来作为你的目录文档这一个互为替换的目录文件可以排成一个列表,服务器会从左至右举行搜索,检查哪个文档在真实的目录中设有。要是一
个也找不到,它将会把目录列表突显出来(除非您早就关闭了突显目录文件列表)。

Deny from all

DirectoryIndex index.PHP index.PHP3 messagebrd.pl index.html index.htm

</Limit>

2.5.配置.htaccess 重定向页面

</Location>

.htaccess
最有效的效用之一就是将呼吁重定向到同站内或站外的不同文档。那在你转移了一个文件名称,但如故想让用户用旧地址访问到它时,变的极为
有用。另一个选用(我发觉的很有用的)是重定向到一个长URL,例如在我的信息报纸揭橥中,我得以运用一个很简单的URL
来指向自家的会员链接。以下是一个重定向文件的例证:

2.12 分裂意访问指定伸张名

Redirect
/location/from/root/file.exthttp://www.21cto.com/new/file/123.html

<Files ~”\..inc$”>

上述例子中,访问在root目录下的名为oldfile.html可以键入:/oldfile.html

Order allow,deny

走访一个旧次级目录中的文件可以键入:/old/oldfile.html

Deny from all


也得以使用.htaccess重定向整个网站的目录。假若你的网站上有一个名为olddirectory的目录,
并且你已经在一个新网站http://www.w3sky.com/newdirectory/上确立了与上平等的文档,你可以将旧目录下拥有的文件做四次重定向而不用一一注明:

</Files>

Redirect
/olddirectoryhttp://www.w3sky.com/newdirectory

2.13 禁止访问一些指定目录

如此那般,任何针对到站点中/olddirectory目录的呼吁都将被另行指向新的站点,包蕴附加的额外URL消息。若是没错使用,此功用将无限强大。

<Directory ~“^/var/www/(.+/)*[0-9]{3}”>

俺们也许对网站开展双重设计,将文档举办了搬迁,或者改变了目录。这时候,来自搜索引擎或者其它网站链接过来的走访就可能出错。那种情形下,可以因而如下指令来落成旧的URL自动转向到新的地址:

Order allow,deny

Redirect /旧目录/旧文档名 新文档的地址

Deny from all

或者全体目录的转向:

</Directory>

Redirect 旧目录 新目录

2.14 通过文件匹配进行取缔

3.1. 密码爱戴

<FilesMatch \.(? i: gif| jpe? g| png)$>

.htaccess文件尽管有各个各类的.htaccess用法,但迄今最流行的也可能是最有用
的做法是将其用来网站目录可信的密码爱惜。即使JavaScrip等也能不负众望,但只有.htaccess具有完善的安全性(即访问者必须掌握密码才得以访
问目录,并且绝无”后门”可走)。

Order allow,deny

利用.htaccess将一个目录加上密码爱抚分五个步骤。第一步是在你的.htaccess文档里拉长适当的几行代码,再将.htaccess文档放进你要维护的目录下:

Deny from all

AuthName “Section Name”
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user

</FilesMatch>

您或许要求按照你的网站情状修改一下上述情节中的一些有的,如用被有限帮衬部分的名字”Members
Area”,替换掉”Section Name”。

2.15 禁止针对URL相对路径的拜访

/full/parth/to/.htpasswd则应该替换为指向.htpasswd文件(前面详述该文档)的完好服务器路径。倘若你不领悟你网站空间的全体路径,请垂询一下您的系统管理员。

<Location /dir/ >

3.2.密码尊崇.htpasswd文件

Order allow,deny


录的密码尊敬比.htaccess的任何职能要麻烦些,因为你必须同时创制一个暗含用户名和密码的文档,用于访问你的网站,相关音信(默许)位于一个名
为.htpasswd的文档里。像.htaccess一样,.htpasswd也是一个未曾公文名且具有8位增添名的文档,可以放置在您网站里的其余地点(此时密码应加密),但提出您将其保存在网站Web根目录外,那样经过网络就无法访问到它了。

Deny from all

在使用.htaccess来安装目录的密码珍惜时,它包涵了密码文件的路线。从平安考虑,有必要把.htaccess
也有限协理起来,不让旁人看来里面的始末。纵然能够用其余格局完成那一点,比如文档的权柄。可是,.htaccess本身也能不辱任务,只需加入如下的吩咐:

</Location>

order allow,deny
deny from all

3 其余安全布局

3.3.安排 .htaccess 输入用户名和密码

3.1 Options

要利用.htaccess对某个目录下的文档设定访问用户和相应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

Options参数代表的趣味

forge:y4E7Ec8e7EwV

ALL用户可在此目录中做此外事

此间密码通过加密,用户可以协调找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,提议坐落www根目录文档之外,这样更为安全些。

ExecCGI允许在此目录中举行CGI script

有了授权用户文档,可以在.htaccess中参与如下指令了:

FollowSymLinksSever可利用symbolic link链接到不在此目录中的档案或目录

AuthUserFile .htpasswd的服务器目录

IndexesSever能够爆发此目录中的档案列表

AuthGroupFile /dev/null (需要授权访问的目录)

Includes提供SSI的功能

AuthName EnterPassword

IncludesNOEXEC可使用SSI功能,但取消#exec与#include 的CGI 功能

AuthType Basic (授权类型)

MultiViews允许经由交谈而得到不一致的文书,例如可由浏览器须求传送法文版的网页`

require user wsabstract
(允许访问的用户,假使愿意表中拥有用户都允许,可以动用 require
valid-user)

None安全不允许存取此目录

注,括号部分为上学时候自己加上的笺注

SymLinkslfOwnerMatch允许存取symbolic
links链接的目录,但仅限于该目录的拥有人

拒绝来自某个IP的访问

3.2 AllowOverride

假若我不想某个政坛部门访问到自己的站点的内容,那可以通过.htaccess中插足该机构的IP而将它们拒绝在外。

AllowOverride None表示并非读取.htaccess文档

例如:

AllowOverride AuthConfig允许做基本的用户名和口令验证

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

AllowOverride Allall表示以.htaccess的始末为准,改变原先的造访权限

其次行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255

3.3 Location

想要拒绝所有人?用deny from all好了。不止用IP,也得以用域名来设定。

#<Location /server-status>          ←<Location>與<Directory>类似,可是是用來限制URL

开创好.htpasswd文档后(可以因此文字编辑器创造),下一步是输入用于访问网站的用户名和密码,应为:

#SetHandler server-status

username:password

#order deny,allow

“password”
的地方应该是加密过的密码。你可以透过三种形式来赢得加密过的密码:一是运用一个网上提供的
permade脚本或协调写一个;另一个很不错的username/password加密服务是透过KxS网站,那里允许你输入用户名及密码,然后生成正
确格式的密码。

#deny from all

对此多用户,你只必要在.htpasswd文档中新增同样格式的一行即可。其余还有部分免费的台本程序可以方便地管理.htpasswd文档,可以自动新增/移除用户等。

#allow from .your_domain.com

3.4.配置.htaccess 间接访问加密网站

#</Location>


你打算访问被.htaccess密码爱护的目录时,你的浏览器会弹出专业的username/password对话窗口。假若你不喜欢那种办法,有些脚
本程序可以允许你在页面内停放username/password输入框来展开求证,你也得以在浏览器的URL框内以以下情势输入用户名和密码(未加密
的):

#<Location /server-info>           ←此区块可显示出服务程序的设定,必须有进入mod_info.c模块才有效益

http://username:password@www.w3sky.com/directory/

#SetHandler server-info

3.5.施用 .htaccess 幸免盗链

#order deny.allow

假诺不希罕人家在她们的网页上连接自己的图形、文档的话,也可以经过htaccess的一声令下来完毕。

#deny from all

所急需的指令如下:

#allow from .your_domain.com

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER }
!^http://([www.)?w3sky.com/.\*$](https://www.jianshu.com/p/b453060e5fe8)\[NC\]
RewriteRule .(gif &line;jpg)$ – [F]

#</Location>

若果觉得让外人的页面开个天窗不佳看,那能够用一张图片来代替:

#<Location /cgi-bin/phf*>          ←此区块是因为Apache从前版本的bug,有些人会用来攻击

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER }
!^http://([www.)?w3sky.com/.\*$](https://www.jianshu.com/p/b453060e5fe8)\[NC\]
RewriteRule .(gif
&line;jpg)$http://www.w3sky.com/代表图片文件名
[R,L]

#deny from all                                系统,启用此区块可将其导向到ErrorDocument指定的网页。

3.6.应用 .htaccess进行地址转向

#ErrorDocument 403 http://phf.apache.org/phf\_abuse\_log.cgi

那 种艺术,就是把yourdomain.com的流量全体301转折到www.yourdomain.com(或者反过来)。其实对于那种方式,国外有人觉得对PageRank没有支持。我认为是因为她们见到
谷歌(Google)管理员工具中有一个首选域工具,可以指定谷歌(Google)的爬虫把www.yourdomain.com照旧yourdomain.com作为抓取和名次的首选域,转向如同就不曾要求了。但确确实实又有为数不少人表达那是一蹴而就的,反正近来还并未人说这种方法会对SEO或者pagerank有怎么样危害。

#</Location>

在.htaccess中写入:

3.4 from

Options +FollowSymlinks All -Indexes
rewriteEngine on
rewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule
^(.*)$http://www.domain.com/$1[R=301,L]

allow from all    ←允許所有使用者存取

3.7.运用 .htaccess对域名中”www”的支配

# allow from flag.com.tw           ←只允許來自於flag.com.tw domain存取,但要先”deny from all”才能拒絕其余地点連進來

强制去除www

# deny from 203.74.205            ←拒绝来自于203.74.205

上面以 WordPress 为例,其它的气象,可以协调参照解决。在你的 WordPress
目录下一般会有一个 .htaccess
文件,即使没有,那就手动建立一个。尽管你设定了 permalink 的话,.htaccess
里面的情节会有如下一坨:

3.5 减少CGI和SSI风险

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

减掉SSI脚本风险,如若用exec等SSI命令运行外部程序,也会存在类似CGI脚本风险,除了里面调试程序时,应运用

实际是啥意思咱就不管它了,只管在 RewriteBase / 那行上面加上:

option命令禁止其应用:

RewriteCond %{HTTP_HOST} ^www.yourdomain.tld$ [NC]
RewriteRule
^(.*)$http://yourdomain.tld/$1[R=301,L]

Option IncludesNOEXEC

如此那般就水到渠成了。当然要把 yourdomain.tld
换成你协调的域名。上边两行的意思是把www.yourdomain.tld那种形式改写成
yourdomain.tld, 并把走访前者的所有链接永久转会到后者。

若要使用CGI或SSI可以应用suEXEC进行布署

域名前强制加上www

3.6 使用ssl加固Apache

假若你实在是细水长流要把 www
加在前面,我下面的终于白写了,表示遗憾。但,你可以。只需把地点添加的两行代码改成那样:

link

RewriteCond %{HTTP_HOST} ^yourdomain.tld$ [NC]
RewriteRule
^(.*)$http://www.yourdomain.tld/$1[R=301,L]

【编辑推荐】

4.1. .htaccess 总结

.htaccess是一个站点管理员可以选取的无敌工具,有越来越多的变迁以适应不一致的用处,能够节省时间及加强网站的安全性

.htaccess的专门表达

*
启用.htaccess,须求修改httpd.conf,启用AllowOverride,并得以用AllowOverride限制特定命令的选取

*
若是需要使用.htaccess以外的其余文件名,可以用AccessFileName指令来改变。例如,需求使用.config
,则可以在服务器配置文件中按以下办法配置:

AccessFileName .config

* 一般景况下,不该使用.
htaccess文件,除非你对主配置文件并未访问权限。有一种很普遍的误会,认为用户认证只可以通过.htaccess文件落到实处,其实并不是那般,把用户
认证写在主配置文件中是全然可行的,而且是一种很好的法子。.htaccess文件应该被用在内容提供者要求针对一定目录改变服务器的配置而又没有
root权限的情形下。若是服务器管理员不情愿频仍修改配置,则可以允许用户通过.htaccess文件自己修改配置,越发是ISP在同一个机械上运行了
多个用户站点,而又希望用户可以友善改变配置的境况下。即便这么,一般都应当尽量地幸免使用.htaccess文件。任何期待放在.htaccess文
件中的配置,都可以放在主配置文件的段中,而且更高速。幸免使用.htaccess文件有多个紧要原因,即性能和安
全。

在线
.htaccess文件生成器http://cooletips.de/htaccess/

可以在线生成. htaccess文件,很不难的就配置重定向,系统错误文件等。

敢想敢做敢持之以恒

.htaccess文件提供了针对各样目录改变配置的法门。

top

.htaccess文件*

相关模块相关指令

*core

*mod_authn_file

*mod_authz_groupfile

*mod_cgi

*mod_include

*mod_mime

*AccessFileName

*AllowOverride

*Options

*AddHandler

*SetHandler

*AuthType

*AuthName

*AuthUserFile

*AuthGroupFile

*Require

top

做事规律和利用方法*

.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的办法,即,在一个特定的文档目录中放置一个富含一个或多个指令的文书,以效用于此目录及其所有子目录。

表达:即使需求使用.htaccess以外的其余文件名,可以用AccessFileName指令来改变。例如,必要使用.config,则能够在服务器配置文件中按以下办法配置:

AccessFileName.config


许放在那几个文件中的指令取决于AllowOverride指令,此命令按连串决定了.htaccess文件中什么
指令才是行得通的。假诺一个发令允许放在.htaccess文件中,则,在本手册的证实中,此命令会有一个覆盖段,其中表达了为使此命令生效而必须在
AllowOverride指令中装置的值。

譬如说,本手册对
AddDefaultCharset指令的评释阐明了,此命令可以用于.htaccess文件(见
Context一行),而Override一行是”FileInfo”,那么为使.htaccess中的此命令有效,则最少要设置
“AllowOverrideFileInfo”。

例子:

Context:serverconfig,virtualhost,directory,.htaccess

Override:FileInfo

一旦不可以确定一个特定的命令是还是不是允许用于.htaccess文件,可以查看手册中对指令的证实,看在Context(“上下文”)行中是或不是有”.htaccess.”。

使用.htaccess文件的场面

相似景况下,不应有使用.htaccess文件,除非您对主服务器配置文件没有存取权限。有一种很广泛的误解,认为用户认证只可以通过.htaccess文件贯彻,但并不是那样,把用户认证写在主服务器配置中是截然可行的,而且是一种很好的法门。


内容提供者须求针对目录改变服务器的配备而对服务器系统尚未root权限时,则应该使用.htaccess文件。
借使服务器管理员不甘于频仍修改配置,则足以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一个机械上宿主五个用户站点,而又愿意用户
可以团结改变配置的状态下。

即便如此,一般都应有尽可能地幸免使用.htaccess文件。任何期待放在.htaccess文件中的配置,都得以放在主服务器的段中,而且更高速。

防止使用.htaccess文件有七个基本点原因。


先是性能。借使AllowOverride允许使用.htaccess文件,则,Apache要求在各样目录中查
找.htaccess由此,无论是不是真正使用,允许使用.htaccess文件都会促成性能的下降。此外,每一趟请求一个页面时,都亟待读
取.htaccess文件。

再有,Apache必须在具备更高级的目录中查找.htaccess文件,使所有有效的命令都起效果(参见howdirectivesareapplied.),所以,即使有对/www/htdocs/example中页面的请求,Apache必须寻找以下文件:

/.htaccess

/www/.htaccess

/www/htdocs/.htaccess

/www/htdocs/example/.htaccess

还要,对此目录以外的种种文件访问,还有4个附加的文件系统访问,纵然这么些文件都不设有。(注意,这也许仅仅暴发在/允许使用.htaccess文件的气象下,纵然那种状态并不多。)


次是平安。如此,会容许用户修改服务器的布署,可能会促成未加限制的改动,请认真考虑是还是不是给予用户那样的特权。不过,要是授予用户较少的特权而无法满意其急需,则会带动卓殊的技术协理请求,所以,必须明确地告知用户已经给予他们的权能,说明AllowOverride设置的值,并指导他们参阅相应的证实,以免日后多如牛毛费劲。

瞩目,在/www/htdocs/example目录下.htaccess文件中放置指令,与,在主服务器配置文件之中中放置相同指令,是一样的。:

/www/htdocs/example中的.htaccess:

/www/htdocs/example中.htaccess文件的内容

AddType text/example.exm

httpd.conf文件中的段

AddType text/example.exm

然则,把这几个布局放置在服务器配置文件中则更是连忙,因为只须要在Apache启动时读取五回,而不是在有文件请求时老是都读取。

将AllowOverride设置为”none”可以完全取缔使用.htaccess文件。

AllowOverrideNone

一声令下的生效

.htaccess
文件中的配置指令成效于.htaccess文件所在的目录及其所有子目录,可是,很关键须求记住
的是,其更尖端的目录也恐怕会有.htaccess文件,而下令是按搜索顺序依次生效,所以,一个一定目录下的.htaccess文件中的指令可能会覆盖
其更高级目录中的.htaccess文件的命令,即,子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

诸如:目录/www/htdocs/example1中的.htaccess文件有如下内容:

Options+ExecCGI

(注意:必须设置”AllowOverrideOptions”以允许在.htaccess文件中利用”Options”指令。)

在目录/www/htdocs/example1/example2中的.htaccess文件有如下内容:

OptionsIncludes

是因为第四个.htaccess文件的存在,/www/htdocs/example1/example2中的CGI执行是不允许的,而只同意OptionsIncludes,它完全覆盖了此前的装置。

注解举例

假如你为了了然如何验证,间接从此间初叶看,有很关键的一些索要专注,有一种常见的误解,认为完成密码验证必要求使
用.htaccess文件,其实不是这么。把认证指令放在主服务器配置文件的段中是一个更好的主意,
而.htaccess文件应当一味用于无权访问主服务器配置文件的时候。参见上述的使用.htaccess文件的场合。

有此申明在先,即便你照样须求使用.htaccess文件,请看之下表达。

非得设置”AllowOverrideAuthConfig”以允许那几个指令生效

.htaccess文件的内容:

AuthTypeBasic

AuthName”PasswordRequired”

AuthUserFile/www/passwords/password.file

AuthGroupFile/www/passwords/group.file

RequireGroupadmins

小心,必须设置AllowOverrideAuthConfig以允许那么些指令生效

更详实的关于身份鉴别和表达的认证,请参见authenticationtutorial。

服务器端包涵举例

.htaccess文件的另一个大面积用途是允许一个特定目录的劳务器端包含(ServerSideIncludes),可以在急需的目录中放置.htaccess文件,并如下配置:

Options+Includes

AddTypetext/htmlshtml

AddHandlerserver-parsedshtml

注意,必须同时设置AllowOverrideOptions和AllowOverrideFileInfo使那些指令生效。

更详细的有关服务器端包罗的表达,请参见SSItutorial。

CGI举例

末段,可以通过.htaccess文件允许在一定目录中举办CGI程序,需按如下配置:

Options+ExecCGI

AddHandlercgi-scriptcgipl

其余,如下,可以使给定目录下具有文件被视为CGI程序:

Options+ExecCGI

SetHandlercgi-script

瞩目,必须设置AllowOverrideOptions使那几个指令生效。

更详细的有关CGI编程和配备的评释,请参见CGItutorial。

疑难解答

借使在.htaccess文件中写入了安插指令但不起功能,可能有多种原因。

最广泛的原因是,AllowOverride指令没有被科学安装,必须有限支撑没有对此文件区域设置
AllowOverrideNone。有一个很好的测试方法,即,在.htaccess文件随便伸张点没用的情节,要是服务器并未回来了一个漏洞分外多音讯,那
么几乎可以看清设置了AllowOverrideNone。

在走访文档时,假若收到服务器的失误信息,应该检查Apache的失误日志,可以知道.htaccess文件中如何指令是不允许利用的,也恐怕会发现须求校订的语法错误。

相关文章