国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页服务器类Web服务器 → Apache的ReWrite的应用

Apache的ReWrite的应用

我要评论 2020/04/09 23:27:59 来源:国语自产精品视频在线看 编辑:绿色资源站 [ ] 评论:0 点击:459次

Apache的【de】mod_rewrite是提供了强大【le qiáng dà】URL操作的【cāo zuò de】杀手级的模块【de mó kuài】,可以实【kě yǐ shí】现几乎【xiàn jǐ hū】🍂所有你梦想的【mèng xiǎng de】URL操作类型,其代价🌻是你必须接受🧒其复杂【qí fù zá】性🔊,因
为💬mod_rewrite的【de】主要障碍就📆是初学者不容👑易理解和运用【hé yùn yòng】,即使是Apache专家有时也会【shí yě huì】🔜发掘出🤶mod_rewrite的【de】新用🌲途。

换句话🍃说😩:对mod_rewrite,或者是🛺打退堂鼓永不【gǔ yǒng bú】再用【zài yòng】,或者是🛺喜欢它【xǐ huān tā】并一生【bìng yī shēng】受用💱。

ReWrite可以应用在以下方面🛡或者解【huò zhě jiě】决以下【jué yǐ xià】问题:
URL的【de】🌝规划
规范的【guī fàn de】🦀URL
说明:
在有些【zài yǒu xiē】🏻网站服务器上,一个资🍘源会拥有多个URL,在实际😖应用和发布中【fā bù zhōng】应该被使用的【shǐ yòng de】🏑是规范【shì guī fàn】的【de】🦀URL,其他的【de】🌝则是简写或者是内部【shì nèi bù】🤝使用的【shǐ yòng de】🏑。无论
用户在请求中使用什【shǐ yòng shí】🚉么形式的【de】🌝URL,他最终【tā zuì zhōng】💏看见的【de】📚都应该【dōu yīng gāi】是规范【shì guī fàn】的【de】🦀URL。

方案【fāng àn】📡:
对所有的【de】💮不规范的【de】😐URL执行一个外部【gè wài bù】的【de】💮HTTP重定向,以改变🅰它在浏览器地址栏中的显示【de xiǎn shì】💥及其后继的【jì de】💮请求。下例中👢的【de】💮规则集用规范【yòng guī fàn】的【de】😐/u/user替
换/~user,并修正【bìng xiū zhèng】💳了🆙/u/user所遗漏的【de】后缀🎸的【de】💮斜杠【xié gàng】。

代码【dài mǎ】🍪:
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]

被移动🖇过的DocumentRoot
说明【shuō míng】:
通常【tōng cháng】,网站服【wǎng zhàn fú】务器的📟DocumentRoot直接对【zhí jiē duì】应于【yīng yú】URL"/",但是,它常常🔧不是处于最高🥉一级❓,而🦆可能只是众多数据【shù jù】🎥池中的【chí zhōng de】一个实👊体🍄。比如【bǐ rú】,在
Intranet站点中👸,有🦅/e/www/(WWW的主页)、/e/sww/ (Intranet的主页)等等,而🦆DocumentRoot指向了【zhǐ xiàng le】🕋/e/www/,则必须保证此【bǎo zhèng cǐ】数据池【shù jù chí】中的所
有🦅内嵌的图片和其他元素对后【sù duì hòu】继请求【jì qǐng qiú】有🦅效。

方案📆:
只须重🚝定向【dìng xiàng】🛃URL /到/e/www/即可【jí kě】😜。这个方【zhè gè fāng】案📆看起来很简单,但只是😎有了♎mod_rewrite模块的支持【zhī chí】,它才简单,因为传统的【tǒng de】URL Aliases机制(
由【yóu】🗂mod_alias及其相【jí qí xiàng】关模块提供)只是作了一个【le yī gè】前缀匹【qián zhuì pǐ】🕞配【pèi】,DocumentRoot是一个对所有URL的前缀,因而无🏼法实现【fǎ shí xiàn】这样的重定向【dìng xiàng】🛃。而用🔚
mod_rewrite的确很🎃简单:

代码【dài mǎ】🆕:
RewriteEngine on
RewriteRule ^/$ /e/www/ [R]

后缀斜🥞杠的【de】问👭题📡
说明【shuō míng】:
每个网管对引【guǎn duì yǐn】✴用目录【lù】🔪后缀斜🥞杠的【de】问👭题📡都有一本苦🐦经,如果遗🕵漏了,服务器【fú wù qì】会产生一个错误㊙,因为如【yīn wéi rú】📌果请求【guǒ qǐng qiú】是🅱/~quux/foo而不是🅱/~quux/foo/
,服务器【fú wù qì】会去找【huì qù zhǎo】一个叫foo的【de】文件,而它是【ér tā shì】🅱一个目录【lù】🐿,所以就报错了【bào cuò le】。事实上🗡,大多数情况下【qíng kuàng xià】,它自己会试图【huì shì tú】修正这【xiū zhèng zhè】个错误㊙,但是🅱有时候【yǒu shí hòu】需
要你手🚒工纠正,比如,在重写【zài chóng xiě】了许多CGI脚本中的复杂【de fù zá】的【de】URL以后🤝。

方案👻:
解决这🛒个微妙【gè wēi miào】👿问题的方案👻是让服【shì ràng fú】务器自动添加后缀的【hòu zhuì de】斜杠【xié gàng】。对🎮此【cǐ】,必须使用一个【yòng yī gè】外部的重定向【chóng dìng xiàng】🚎,使浏览器正确地处理后继的对🎮诸如图片的请【piàn de qǐng】🐴
求。如果仅【rú guǒ jǐn】仅作一🚓个内部📱的重写🏣,可能只对目录💮页面有效,而对【ér duì】🎮内嵌有使用相【shǐ yòng xiàng】对🎮URL的图片的页面【de yè miàn】🙊则无效【zé wú xiào】,因为浏【yīn wéi liú】览器有💉请求内【qǐng qiú nèi】🐂嵌目标的可
能。比如,如果不🔕用外部【yòng wài bù】重定向【chóng dìng xiàng】🚎,/~quux/foo/index.html页面中对🎮image.gif的请求🌓,其结果【qí jié guǒ】将是☕/~quux/image.gif!。

所以,应该这样写:

代码【dài mǎ】🍁:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo$ foo/ [R]

又懒又疯狂的🎸做法是【zuò fǎ shì】把这些【bǎ zhè xiē】写入其♿宿主目录中🏝的顶级.htaccess中🏝,但是须【dàn shì xū】注意♏,如此会【rú cǐ huì】🛃带来一些处理【xiē chù lǐ】上的开销。

代码【dài mǎ】🕓:
RewriteEngine on
RewriteBase /~quux/
RewriteCond % -d
RewriteRule ^(.+[^/])$ $1/ [R]

集群网【jí qún wǎng】🏢站的【de】同类URL规划【guī huá】🚟
说明【shuō míng】🍍:
我们希望在一个【gè】🎼Intranet集群网【jí qún wǎng】🏢站中,对所有WWW服务器【fú wù qì】建立一个【gè】🎼同类的【de】一致【yī zhì】🐗性的【de】URL规划【guī huá】🚟,也就是,所有的【suǒ yǒu de】URL(对单个【gè】🎼服务器【fú wù qì】来说,是本地
的【de】依赖于此服务器【fú wù qì】的【de】🆎!)是独立【shì dú lì】于服务〽器的【qì de】👪!我们需😚要的【de】是一个【gè】🎼具有独【jù yǒu dú】立于服【lì yú fú】务〽器的【qì de】👪一致【yī zhì】性规划【guī huá】🚟的【de】WWW名称空间🍇,即📶,URL不需要包含正👌确的【de】🔣
物理的【wù lǐ de】目🎥标服务器【fú wù qì】,而由集群本身【qún běn shēn】🚕来自动定位物理的【wù lǐ de】目🎥标主机。

方案🍰:
首先,目标服务器的【wù qì de】⏮信息来自🖊(产生📣)于包含【yú bāo hán】有用户、组以及实体的【shí tǐ de】外部地【wài bù dì】图,其格式【qí gé shì】形如📡:

代码【dài mǎ】📉:
user1 server_of_user1
user2 server_of_user2
: :

这些信息被存【xī bèi cún】✝入map.xxx-to-host文件【wén jiàn】♍。其次,如果URL在一个服务器【fú wù qì】🚅上无效,需要引导所有【dǎo suǒ yǒu】的服务【de fú wù】🚥器重定👫向URL

代码【dài mǎ】👁:
/u/user/anypath
/g/group/anypath
/e/entity/anypath

RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/
RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\

移动宿主目录【zhǔ mù lù】🛁到不同的网站服务器【fú wù qì】
说明【shuō míng】:
通常【tōng cháng】🐞,许多网管在建【guǎn zài jiàn】立一个新的网🍧站服务器【fú wù qì】时,都会有这样的要求【yào qiú】:重定向【chóng dìng xiàng】一个网【yī gè wǎng】🔃站服务器【fú wù qì】上的🍢所有宿✝主目录【zhǔ mù lù】🛁到另一🌕个网站🥁服务器【fú wù qì】。

结构化📯的宿主目【zhǔ mù】🎏录【lù】
说明😔:
一【yī】些拥有几千【yǒu jǐ qiān】个用户的网站😅通常都😦使用结构化📯的宿主目【zhǔ mù】🎏录【lù】规划,即🗒,每个宿主目【zhǔ mù】🎏录【lù】位于一【yī】📇个带有特定前【tè dìng qián】缀比如【zhuì bǐ rú】其用户名的第一个字【yī gè zì】符的子【fú de zǐ】🎨目【mù】
录【lù】下。那么,/~foo/anypath代表😤/home/f/foo/.www/anypath,而/~bar/anypath代表😤/home/b/bar/.www/anypath。

方案:
可以使【kě yǐ shǐ】🥀用下列规则集来扩展【lái kuò zhǎn】~以达到🔨上述目的【de】🏃。

代码【dài mǎ】😂:
RewriteEngine on
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3

文件系【wén jiàn xì】统的【de】重🤾组
说明:
这是一【zhè shì yī】个不加雕琢的【de】例子:一个大量使用❕针对目【zhēn duì mù】💹录的【de】规则集以实现平【shí xiàn píng】滑观感,而从【cóng】来不用调整数据结构的【jié gòu de】杀手级🍞的【de】应用。背景🤫:net.sw从【cóng】
1992年开始🌳,存放了我收集【wǒ shōu jí】的【de】免费🌝的【de】有效的【de】Unix软件包💠。它是我【tā shì wǒ】😃的爱好【de ài hǎo】也是我🍏的工作【de gōng zuò】,因为在🏼学习计【xué xí jì】🙂算机科🌸学的【de】同时,业余时间还做了多年
的系统【de xì tǒng】和网络【hé wǎng luò】的管理【de guǎn lǐ】员。每周我都需要整理软件,因而建【yīn ér jiàn】立了一💂个层次【gè céng cì】很深的【hěn shēn de】📶目录结♍构来存👺放各种🖨软件包💠:

代码【dài mǎ】😺:
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-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 netsw 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月,我决定🏮通过一个漂亮🐳的Web接口公【jiē kǒu gōng】开我的【kāi wǒ de】收藏【shōu cáng】。“漂亮”是指提♋供一个【gòng yī gè】💲接口以🤢直接浏览整个目录结📠构【gòu】,同时不【tóng shí bú】💦对这个【duì zhè gè】结构【gòu】做任何改
变【biàn】 - 甚至也🥒不在结🌴构顶部【gòu dǐng bù】放置CGI脚本【jiǎo běn】。为什么【wéi shí me】呢?因为这🐼个结构【gòu】还要能够被FTP访问,而且我🎲不希望其中有【qí zhōng yǒu】✔任何Web或者CGI的成分。

方案🍝:
这个方【zhè gè fāng】案🍝分为两个部分【bù fèn】🎻:第一个【dì yī gè】部分【bù fèn】🎻,是用于【shì yòng yú】在空闲时间建立所有【lì suǒ yǒu】♑目录页面的🤱CGI脚本集。我把它【wǒ bǎ tā】🔓们放在/e/netsw/.www/,如下:

代码【dài mǎ】❣:
-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- 1 netsw users

关键词:apache,web服务器

阅读本文后您有什么感想? 已有 人给出评价!

  • 101 欢迎喜欢
  • 2 白痴
  • 2 拜托
  • 104 哇
  • 14 加油
  • 2 鄙视