ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:40.11KB ,
资源ID:6791815      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6791815.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Apache中的htaccess文件使用详解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Apache中的htaccess文件使用详解.docx

1、Apache中的htaccess文件使用详解.htaccess文件使用手册- .htaccess文件(或者分布式配置文件提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。 - 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。 - .htaccess必须以ASCII模式上传,最好将其权限设置为644。 错误文档的定位常用的客户端请求错误返回代码: 401 Authorization Required 403 Fo

2、rbidden 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指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置

3、这些页面。然后再.htaccess中,加入如下的指令: ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/internalerror.html 一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为: ErrorDocument 错误代码 /目录名/文件名.扩展名 如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子: ErrorDocument 401 你没有权

4、限访问该页面,请放弃! 文档访问的密码保护 要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如: zheng:y4E7Ep8e7EYV 这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。 有了授权用户文档,可以在.htaccess中加入如下指令了: AuthUserFile .htpasswd的服务器目录 AuthGroupFile /dev/null (需要授权访问的目录) AuthName EnterPasswo

5、rd AuthType Basic (授权类型) require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user) 注,括号部分为学习时候自己添加的注释 拒绝来自某个IP的访问 如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。 例如: order allow,deny deny from 210.10.56.32 deny from 219.5.45. allow from all 第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0219.

6、2.45.255 想要拒绝所有人?用deny from all好了。不止用IP,也可以用域名来设定。 保护.htaccess文档 在使用.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,.htaccess本身也能做到,只需加入如下的指令: order allow,deny deny from all URL转向 我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指

7、令来完成旧的URL自动转向到新的地址: Redirect /旧目录/旧文档名 新文档的地址 或者整个目录的转向: Redirect 旧目录 新目录 改变缺省的首页文件 一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名: DirectoryIndex 新的缺省文件名 也可以列出多个,顺序表明它们之间的优先级别,例如: DirectoryIndex filename.html index.cgi i

8、ndex.pl default.htm 防止盗链 如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。 所需要的指令如下: RewriteEngine on RewriteCond % !$ RewriteCond % !http:/(www.)? NC RewriteRule .(gif|jpg)$ - F 如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替: RewriteEngine on RewriteCond % !$ RewriteCond % !http:/(www.)? NC RewriteRule .(gif|jpg)$ R,

9、LApache的ReWrite的应用大全Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你梦想的URL操作类型,其代价是你必须接受其复杂性,因为mod_rewrite的主要障碍就是初学者不容易理解和运用,即使是Apache专家有时也会发掘出mod_rewrite的新用途。 换句话说:对mod_rewrite,或者是打退堂鼓永不再用,或者是喜欢它并一生受用。 ReWrite可以应用在以下方面或者解决以下问题: URL的规划 规范的URL 说明: 在有些网站服务器上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者

10、是内部使用的。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。 方案: 对所有的不规范的URL执行一个外部的HTTP重定向,以改变它在浏览器地址栏中的显示及其后继的请求。下例中的规则集用规范的/u/user替换/user,并修正了/u/user所遗漏的后缀的斜杠。 代码: RewriteRule /(/+)/?(.*) /u/ R RewriteRule /(uge)/(/+)$ / R 规范的主机名 说明: . 方案: 代码: RewriteCond % !fully.qualified.domain.name NC RewriteCond % !$ RewriteC

11、ond % !80$ RewriteRule /(.*) http:/fully.qualified.domain.name:%/ L,R RewriteCond % !fully.qualified.domain.name NC RewriteCond % !$ RewriteRule /(.*) http:/fully.qualified.domain.name/ L,R 被移动过的DocumentRoot 说明: 通常,网站服务器的DocumentRoot直接对应于URL/,但是,它常常不是处于最高一级,而可能只是众多数据池中的一个实体。比如,在Intranet站点中,有/e/www/(

12、WWW的主页)、/e/sww/ (Intranet的主页)等等,而DocumentRoot指向了/e/www/,则必须保证此数据池中的所有内嵌的图片和其他元素对后继请求有效。 方案: 只须重定向URL /到/e/www/即可。这个方案看起来很简单,但只是有了mod_rewrite模块的支持,它才简单,因为传统的URL Aliases机制(由mod_alias及其相关模块提供)只是作了一个前缀匹配,DocumentRoot是一个对所有URL的前缀,因而无法实现这样的重定向。而用mod_rewrite的确很简单: 代码: RewriteEngine on RewriteRule /$ /e/www

13、/ R 后缀斜杠的问题 说明: 每个网管对引用目录后缀斜杠的问题都有一本苦经,如果遗漏了,服务器会产生一个错误,因为如果请求是/quux/foo而不是/quux/foo/,服务器会去找一个叫foo的文件,而它是一个目录,所以就报错了。事实上,大多数情况下,它自己会试图修正这个错误,但是有时候需要你手工纠正,比如,在重写了许多CGI脚本中的复杂的URL以后。 方案: 解决这个微妙问题的方案是让服务器自动添加后缀的斜杠。对此,必须使用一个外部的重定向,使浏览器正确地处理后继的对诸如图片的请求。如果仅仅作一个内部的重写,可能只对目录页面有效,而对内嵌有使用相对URL的图片的页面则无效,因为浏览器有请

14、求内嵌目标的可能。比如,如果不用外部重定向,/quux/foo/index.html页面中对image.gif的请求,其结果将是/quux/image.gif!。 所以,应该这样写: 代码: RewriteEngine on RewriteBase /quux/ RewriteRule foo$ foo/ R 又懒又疯狂的做法是把这些写入其宿主目录中的顶级.htaccess中,但是须注意,如此会带来一些处理上的开销。 代码: RewriteEngine on RewriteBase /quux/ RewriteCond % -d RewriteRule (.+/)$ / R 集群网站的同类UR

15、L规划 说明: 我们希望在一个Intranet集群网站中,对所有WWW服务器建立一个同类的一致性的URL规划,也就是,所有的URL(对单个服务器来说,是本地的依赖于此服务器的!)是独立于服务器的!我们需要的是一个具有独立于服务器的一致性规划的WWW名称空间,即,URL不需要包含正确的物理的目标服务器,而由集群本身来自动定位物理的目标主机。 方案: 首先,目标服务器的信息来自(产生)于包含有用户、组以及实体的外部地图,其格式形如: 代码: user1 server_of_user1 user2 server_of_user2 : : 这些信息被存入map.xxx-to-host文件。其次,如果U

16、RL在一个服务器上无效,需要引导所有的服务器重定向URL 代码: /u/user/anypath /g/group/anypath /e/entity/anypath 到 代码: http:/physical-host/u/user/anypath http:/physical-host/g/group/anypath http:/physical-host/e/entity/anypath 以下规则集依靠地图文件来完成这个操作(假定,如果一个用户在地图中没有对应的项,则使用server0为默认服务器): 代码: RewriteEngine on RewriteMap user-to-host

17、 txt:/path/to/map.user-to-host RewriteMap group-to-host txt:/path/to/map.group-to-host RewriteMap entity-to-host txt:/path/to/map.entity-to-host RewriteRule /u/(/+)/?(.*) http:/$/u/ RewriteRule /g/(/+)/?(.*) http:/$/g/ RewriteRule /e/(/+)/?(.*) http:/$/e/ RewriteRule /(uge)/(/+)/?$ /.www/ RewriteRul

18、e /(uge)/(/+)/(.+.+) /.www/ 移动宿主目录到不同的网站服务器 说明: 通常,许多网管在建立一个新的网站服务器时,都会有这样的要求:重定向一个网站服务器上的所有宿主目录到另一个网站服务器。 方案: 很简单,用mod_rewrite。在老的网站服务器上重定向所有的URL /user/anypath到http:/newserver/user/anypath。 代码: RewriteEngine on RewriteRule /(.+) http:/newserver/ R,L 结构化的宿主目录 说明: 一些拥有几千个用户的网站通常都使用结构化的宿主目录规划,即,每个宿主目录

19、位于一个带有特定前缀比如其用户名的第一个字符的子目录下。那么,/foo/anypath代表/home/f/foo/.www/anypath,而/bar/anypath代表/home/b/bar/.www/anypath。 方案: 可以使用下列规则集来扩展以达到上述目的。 代码: RewriteEngine on RewriteRule /(a-z)a-z0-9+)(.*) /home/.www 文件系统的重组 说明: 这是一个不加雕琢的例子:一个大量使用针对目录的规则集以实现平滑观感,而从来不用调整数据结构的杀手级的应用。背景:net.sw从1992年开始,存放了我收集的免费的有效的Unix软

20、件包。它是我的爱好也是我的工作,因为在学习计算机科学的同时,业余时间还做了多年的系统和网络的管理员。每周我都需要整理软件,因而建立了一个层次很深的目录结构来存放各种软件包: 代码: drwxrwxr-x 2 netsw users 512 Aug 3 18:39 Audio/ drwxrwxr-x 2 netsw users 512 Jul 9 14:37 Benchmark/ drwxrwxr-x 12 netsw users 512 Jul 9 00:34 Crypto/ drwxrwxr-x 5 netsw users 512 Jul 9 00:41 Database/ drwxrwxr

21、-x 4 netsw users 512 Jul 30 19:25 Dicts/ drwxrwxr-x 10 netsw users 512 Jul 9 01:54 Graphic/ drwxrwxr-x 5 netsw users 512 Jul 9 01:58 Hackers/ drwxrwxr-x 8 netsw users 512 Jul 9 03:19 InfoSys/ drwxrwxr-x 3 netsw users 512 Jul 9 03:21 Math/ drwxrwxr-x 3 netsw users 512 Jul 9 03:24 Misc/ drwxrwxr-x 9 n

22、etsw users 512 Aug 1 16:33 Network/ drwxrwxr-x 2 netsw users 512 Jul 9 05:53 Office/ drwxrwxr-x 7 netsw users 512 Jul 9 09:24 SoftEng/ drwxrwxr-x 7 netsw users 512 Jul 9 12:17 System/ drwxrwxr-x 12 netsw users 512 Aug 3 20:15 Typesetting/ drwxrwxr-x 10 netsw users 512 Jul 9 14:08 X11/ 1996年7月,我决定通过一

23、个漂亮的Web接口公开我的收藏。“漂亮”是指提供一个接口以直接浏览整个目录结构,同时不对这个结构做任何改变 - 甚至也不在结构顶部放置CGI脚本。为什么呢?因为这个结构还要能够被FTP访问,而且我不希望其中有任何Web或者CGI的成分。 方案: 这个方案分为两个部分:第一个部分,是用于在空闲时间建立所有目录页面的CGI脚本集。我把它们放在/e/netsw/.www/,如下: 代码: -rw-r-r- 1 netsw users 1318 Aug 1 18:10 .wwwacl drwxr-xr-x 18 netsw users 512 Aug 5 15:51 DATA/ -rw-rw-rw-

24、1 netsw users 372982 Aug 5 16:35 LOGFILE -rw-r-r- 1 netsw users 659 Aug 4 09:27 TODO -rw-r-r- 1 netsw users 5697 Aug 1 18:01 netsw-about.html -rwxr-xr-x 1 netsw users 579 Aug 2 10:33 netsw-access.pl -rwxr-xr-x 1 netsw users 1532 Aug 1 17:35 netsw-changes.cgi -rwxr-xr-x 1 netsw users 2866 Aug 5 14:49

25、 netsw-home.cgi drwxr-xr-x 2 netsw users 512 Jul 8 23:47 netsw-img/ -rwxr-xr-x 1 netsw users 24050 Aug 5 15:49 netsw-lsdir.cgi -rwxr-xr-x 1 netsw users 1589 Aug 3 18:43 netsw-search.cgi -rwxr-xr-x 1 netsw users 1885 Aug 1 17:41 netsw-tree.cgi -rw-r-r- 1 netsw users 234 Jul 30 16:35 netsw-unlimit.lst

26、 其中的DATA/子目录包含了上述目录结构,即实在的net.sw,由rdist在需要的时候自动更新。第二个部分的遗留问题是:如何连接这两个结构为一个平滑观感的URL树?我希望在运行适当的CGI脚本而使用各种URL的时候,使用户感觉不到DATA/目录的存在。方案如下:首先,我把下列配置放在服务器上DocumentRoot中的针对目录的配置文件里,以重写公布的URL /net.sw/ 为内部路径 /e/netsw: 代码: RewriteRule net.sw$ net.sw/ R RewriteRule net.sw/(.*)$ e/netsw/ 第一条规则是针对遗漏后缀斜杠的请求的!第二条规则

27、才是真正实现功能的。接着,就是放在针对目录的配置文件/e/netsw/.www/.wwwacl中的杀手级的配置了: 代码: Options ExecCGI FollowSymLinks Includes MultiViews RewriteEngine on # we are reached via /net.sw/ prefix RewriteBase /net.sw/ # first we rewrite the root dir to # the handling cgi script RewriteRule $ netsw-home.cgi L RewriteRule index.ht

28、ml$ netsw-home.cgi L # strip out the subdirs when # the browser requests us from perdir pages RewriteRule .+/(netsw-/+/.+)$ L # and now break the rewriting for local files RewriteRule netsw-home.cgi.* - L RewriteRule netsw-changes.cgi.* - L RewriteRule netsw-search.cgi.* - L RewriteRule netsw-tree.c

29、gi$ - L RewriteRule netsw-about.html$ - L RewriteRule netsw-img/.*$ - L # anything else is a subdir which gets handled # by another cgi script RewriteRule !netsw-lsdir.cgi.* - C RewriteRule (.*) netsw-lsdir.cgi/ 阅读提示: 注意前半部分中的标志L(最后),和无对应项(-) 注意后半部分中的符号!(非),和标志C (链) 注意最后一条规则的全匹配模式 代码: NCSA imagemap和

30、Apache mod_imap 说明: 许多人都希望在从NCSA网站服务器向较现代的Apache网站服务器转移中实现平滑过渡,即希望老的NCSA imagemap程序能在Apache的较现代的mod_imap支持下正常运作。但问题在于,到处都是通过/cgi-bin/imagemap/path/to/page.map引用imagemap程序的连接,而在Apache下,应该写成/path/to/page.map。 方案: 使用全局规则在空闲时间去除所有这些请求的前缀: 代码: RewriteEngine on RewriteRule /cgi-bin/imagemap(.*) PT 在多个目录中搜索页面 说明: 有时会有必要使网站服务器在多个目录中搜索页面,对此,MultiViews或者其他技术无能为力。 方案: 编制一个明确的规则集以搜索目录中的文件。 代码: RewriteEngine on # first try to find it in custom/. # .and if found stop and be happy:

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

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