




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第第6章章 Apache 服務(wù)服務(wù) 本章要點:本章要點: Apache主配置文件主配置文件 httpd.conf 訪問控制訪問控制 虛擬主機虛擬主機 重定向重定向 重寫規(guī)則重寫規(guī)則2361 Apache概述概述 Apache是一款著名的是一款著名的Web服務(wù)器軟件。服務(wù)器軟件。 在在Internet上,上, Apache是占有率最高的是占有率最高的Web服務(wù)器。服務(wù)器。 當(dāng)前,當(dāng)前,Apache主要有兩種流行的版本,主要有兩種流行的版本, 第一種是第一種是1.3版,這是比較早期但十分成熟版,這是比較早期但十分成熟穩(wěn)定的版本,目前使用率仍很高;穩(wěn)定的版本,目前使用率仍很高; 第二種是第二種是2
2、.0版,這是版,這是Apache最新的版本,最新的版本,增加和完善了一些功能。增加和完善了一些功能。RHEL 7.0中的中的Apache服務(wù)采用的是服務(wù)采用的是2.4.6版版4611 Apache的功能的功能 下面列舉出Apache的主要功能:1)支持HTTP1.1標(biāo)準(zhǔn)。2)支持多種腳本語言如,perl、php、jsp等。3)支持多種用戶認(rèn)證機制,如.htaccess文件、mysql數(shù)據(jù)庫、openldap目錄等。4)支持虛擬主機。5)支持訪問控制。6)支持重定向和重寫規(guī)則。7)支持SSL。5612 Apache的安裝的安裝在RHEL 7.0中與Apache相關(guān)的有以下3個軟件包:(1)htt
3、pd-2.4.6-17.el7.x86_64.rpm這是Apache服務(wù)器的軟件包。(2)httpd-manual-2.4.6-17.el7.noarch.rpm這是Apache幫助手冊的軟件包。(3)httpd-tools-2.4.6-17.el7.x86_64.rpm 這是Apache工具軟件包??赏ㄟ^#rpm ivh httpd*.rpm或采用yum來進行安裝,如下:#yum install httpd httpd-tools httpd-manual執(zhí)行如下命令,來安裝上述3個軟件包6613 Apache的運行的運行 在RHEL 4.0中,有兩種典型啟動Apache的方法:方法一:ro
4、otserver1 # service httpd start方法二:rootserver1 # apachectl start 如果要設(shè)置每次開機時自動運行Apache服務(wù)器,可執(zhí)行如下指令:rootserver1 # chkconfig httpd on7 通過如下命令來檢查運行狀態(tài)運行狀態(tài):rootserver1 #service httpd status 通過如下命令來檢查語法檢查語法:rootserver1 #apachectl configtest或rootserver1 #httpd -t 通過如下命令來查看編譯時的配置參數(shù)配置參數(shù):rootserver1 #httpd V 通過
5、如下命令來查看已經(jīng)被編譯到編譯到Apache中的模塊中的模塊:rootserver1 #httpd l862 Apache的配置文件的配置文件621 Apache配置文件的結(jié)構(gòu)配置文件的結(jié)構(gòu) Apache的配置文件是/etc/httpd/conf/httpd.conf (1)Section 1: Global Environment這段的功能是控制Apache服務(wù)器進程的全局操作。(2)Section 2: Main server configuration這段的功能是處理任何不被段處理的請求,即提供默認(rèn)處理。請注意,section 2中指令都可以寫在虛擬主機段中。(3)Section 3:
6、Virtual Hosts這段的功能是提供虛擬主機配置。9622 Apache配置指令配置指令1Section 1: Global Environment段的配置指令(1)ServerRoot /etc/httpd功能:設(shè)置服務(wù)器的根目錄。說明:在Apache配置文件中如果文件名不以“/”開頭,則認(rèn)為是相對路徑,會在文件名前加上ServerRoot命令指定的默認(rèn)路徑名。(2)Listen 80功能:設(shè)置Apache服務(wù)器監(jiān)聽的端口號為80。說明:也可以設(shè)置Apache服務(wù)器監(jiān)聽的IP地址和端口號,如Listen 8:8010(3)包含模塊文件Include conf.mod
7、ules.d/*.conf功能:將配置模塊文件包含進來,這里的模塊都是對動態(tài)共享對象支持。功能:將配置模塊文件包含進來,這里的模塊都是對動態(tài)共享對象支持。查看該目錄下包含進來了哪些文件:查看該目錄下包含進來了哪些文件:#ll conf.modules.d/總用量 44-rw-r-r-. 1 root root 3739 3月 20 2014 00-base.conf-rw-r-r-. 1 root root 139 3月 20 2014 00-dav.conf-rw-r-r-. 1 root root 41 3月 20 2014 00-lua.conf-rw-r-r-. 1 root root
8、 742 3月 20 2014 00-mpm.conf-rw-r-r-. 1 root root 894 3月 20 2014 00-proxy.conf-rw-r-r-. 1 root root 88 3月 20 2014 00-systemd.conf-rw-r-r-. 1 root root 451 3月 20 2014 01-cgi.conf-rw-r-r-. 1 root root 53 1月 27 2014 10-auth_kerb.conf-rw-r-r-. 1 root root 43 1月 27 2014 10-nss.conf-rw-r-r- 1 root root 216
9、 3月 7 2014 10-php.conf-rw-r-r-. 1 root root 43 1月 27 2014 10-wsgi.conf (4)自定義)自定義Apache子進程運行身份子進程運行身份User apacheGroup apache功能:設(shè)置 Apache服務(wù)器子進程運行時的身份為apache、屬組為apache 。說明:將Apache服務(wù)器子進程的運行身份設(shè)置為權(quán)限很低的賬號是當(dāng)前安全措施中經(jīng)常采用的方式。示例:# ps aux | grep httpdroot 34285 0.0 0.3 501632 27432 ? Ss 09:27 0:01 /usr/sbin/http
10、d -DFOREGROUNDroot 34286 0.0 0.1 50784 9724 ? S 09:27 0:00 /usr/libexec/nss_pcache 851973 off /etc/httpd/aliasapache 37170 0.0 0.3 518064 27248 ? S 10:32 0:00 /usr/sbin/httpd -DFOREGROUNDapache 37174 0.0 0.3 518064 27248 ? S 10:32 0:00 /usr/sbin/httpd -DFOREGROUNDapache 37175 0.0 0.3 518064 27248 ?
11、S 10:32 0:00 /usr/sbin/httpd -DFOREGROUNDapache 37177 0.0 0.3 518064 27248 ? S 10:32 0:00 /usr/sbin/httpd -DFOREGROUNDapache 37178 0.0 0.3 518064 27248 ? S 10:32 0:00 /usr/sbin/httpd -DFOREGROUND11122Section 2 Main server configuration段(1)設(shè)置)設(shè)置管理員郵箱管理員郵箱ServerAdmin rootlocalhost功能:設(shè)置功能:設(shè)置Apache服務(wù)器管理
12、員的郵箱。服務(wù)器管理員的郵箱。(2)設(shè)置)設(shè)置服務(wù)器名稱和端口號服務(wù)器名稱和端口號#ServerName :80功能:設(shè)置功能:設(shè)置Apache默認(rèn)站點的名稱和端口號。默認(rèn)站點的名稱和端口號。13(3)根目錄的根目錄的訪問控制訪問控制 AllowOverride none Require all denied 功能:在main server段中有很多個Directory指令配置段,它的寫法有些類似HTML的格式。表示要對文件系統(tǒng)的目錄進行限制。AllowOverride None表示不允許覆蓋不允許覆蓋,即不允許其他文件(.htaccess)中配置覆蓋當(dāng)前的設(shè)置。AllowOverride的值
13、參見表6-1所示:14(5)對)對文檔根父目錄文檔根父目錄的訪問控制的訪問控制 AllowOverride None # Allow open access: Require all granted功能:對文檔根的父目錄功能:對文檔根的父目錄“/var/www”放松限放松限制,不允許覆蓋當(dāng)前設(shè)置且開放無條件訪問。制,不允許覆蓋當(dāng)前設(shè)置且開放無條件訪問。這是這是Apache 2.4版中默認(rèn)配置文件中的新設(shè)置,版中默認(rèn)配置文件中的新設(shè)置,由于權(quán)限比較寬松,因此由于權(quán)限比較寬松,因此需要注意安全問題需要注意安全問題。15(6)對)對文檔根文檔根的的訪問控制訪問控制功能:針對文檔根目錄功能:針對文檔根
14、目錄/var/www/html進行限制。進行限制。Options Indexes FollowSymLinks功能:設(shè)置允許跟隨符號連接;功能:設(shè)置允許跟隨符號連接;Indexes的含義是如果的含義是如果要訪問的文檔不存在,則會顯示出該目錄下的文件目錄要訪問的文檔不存在,則會顯示出該目錄下的文件目錄清單。清單。AllowOverride None功能:不允許覆蓋當(dāng)前配置,即不處理功能:不允許覆蓋當(dāng)前配置,即不處理.htaccess文件。文件。Require all granted功能:允許從任意地址訪問該目錄。功能:允許從任意地址訪問該目錄。Options的值參見表6-2所示:1617表6-2
15、 Options選項值及其含義(7)設(shè)置)設(shè)置默認(rèn)文檔名默認(rèn)文檔名 DirectoryIndex index.html功能:設(shè)置每個目錄的默認(rèn)文檔名。功能:設(shè)置每個目錄的默認(rèn)文檔名。說明:當(dāng)訪問網(wǎng)站時如果沒有指定具體的文檔,則會說明:當(dāng)訪問網(wǎng)站時如果沒有指定具體的文檔,則會在指定的目錄下找有沒有默認(rèn)文檔存在,如果有則顯在指定的目錄下找有沒有默認(rèn)文檔存在,如果有則顯示。示。(8)文件訪問控制文件訪問控制 Require all denied功能:無條件禁止訪問文件名中包含功能:無條件禁止訪問文件名中包含“.ht” 的文件。的文件。18(9)設(shè)置)設(shè)置錯誤日志錯誤日志ErrorLog logs/e
16、rror_log功能:指定錯誤日志的存放位置。功能:指定錯誤日志的存放位置。(10)設(shè)置)設(shè)置日志級別日志級別LogLevel warn功能:指定日志記錄的級別。功能:指定日志記錄的級別。(11)設(shè)置)設(shè)置日志格式日志格式 LogFormat %h %l %u %t %r %s %b %Refereri %User-Agenti combined LogFormat %h %l %u %t %r %s %b common LogFormat %h %l %u %t %r %s %b %Refereri %User-Agenti %I %O combinedio CustomLog logs/a
17、ccess_log combined 功能:利用功能:利用LogFormat指令設(shè)置記錄日志時采用的格式;利用指令設(shè)置記錄日志時采用的格式;利用CustomLog指令設(shè)置訪問日志的位置和類型。指令設(shè)置訪問日志的位置和類型。19(12)設(shè)置)設(shè)置CGI腳本目錄的別名腳本目錄的別名ScriptAlias /cgi-bin/ /var/www/cgi-bin/功能:定義功能:定義CGI腳本目錄的別名,即將腳本目錄的別名,即將/cgi-bin/定義為定義為/var/www/cgi-bin/的別名。的別名。說明:一般情況下,說明:一般情況下,/cgi-bin/中存放的是中存放的是CGI腳本程序,而且腳腳
18、本程序,而且腳本程序應(yīng)該位于文檔根目錄之外,所以采用了別名(虛擬目錄)本程序應(yīng)該位于文檔根目錄之外,所以采用了別名(虛擬目錄)的方式。接下來,仍然是對腳本別名所對應(yīng)的真實目錄做限制的方式。接下來,仍然是對腳本別名所對應(yīng)的真實目錄做限制的配置段,內(nèi)容如下:的配置段,內(nèi)容如下: AllowOverride None Options None Require all granted20(13)設(shè)置)設(shè)置MIME模塊模塊TypesConfig /etc/mime.types AddType application/x-compress .ZAddType application/x-gzip .gz
19、.tgz功能:如果前面的功能:如果前面的AddEncoding去掉注釋的話,那么應(yīng)該定義去掉注釋的話,那么應(yīng)該定義這些擴展名來指明這些媒體文件的類型。這些擴展名來指明這些媒體文件的類型。 AddType text/html .shtmlAddOutputFilter INCLUDES .shtml功能:定義功能:定義SSI(服務(wù)器端包含)文件的擴展名;增加處(服務(wù)器端包含)文件的擴展名;增加處理理.shtml文件的方法。文件的方法。 (14)增加默認(rèn)字符集增加默認(rèn)字符集AddDefaultCharset UTF-8功能:增加默認(rèn)字符集為功能:增加默認(rèn)字符集為UTF-8。21(15)MIME M
20、agic模塊模塊 MIMEMagicFile conf/magic功能:允許服務(wù)器根據(jù)文件內(nèi)容的各種提示來決定其類型。功能:允許服務(wù)器根據(jù)文件內(nèi)容的各種提示來決定其類型。(16)采用)采用sendfile系統(tǒng)調(diào)用來傳遞文件系統(tǒng)調(diào)用來傳遞文件EnableSendfile on功能:采用內(nèi)存映射或功能:采用內(nèi)存映射或sendfile系統(tǒng)調(diào)用來傳遞文件。這通??上到y(tǒng)調(diào)用來傳遞文件。這通??梢蕴岣叻?wù)器的性能,但是在基于網(wǎng)絡(luò)掛裝的文件系統(tǒng)上,必以提高服務(wù)器的性能,但是在基于網(wǎng)絡(luò)掛裝的文件系統(tǒng)上,必須關(guān)閉此特性。須關(guān)閉此特性。(17)包含可選的配置文件包含可選的配置文件IncludeOptional c
21、onf.d/*.conf功能:包含功能:包含/etc/httpd/conf.d目錄下所有以目錄下所有以.conf結(jié)尾的配置文結(jié)尾的配置文件,件,這些可選的這些可選的“小配置文件小配置文件”是主配置文件的是主配置文件的重要擴展和補充。重要擴展和補充。222363 Apache的配置示例的配置示例631 主機訪問控制主機訪問控制1.主機訪問控制示例一:主機訪問控制示例一: Order allow,deny Allow from /24 Deny from 23功能:除了功能:除了23以外,以外, /24
22、網(wǎng)段的其他機器可以訪問該目錄。網(wǎng)段的其他機器可以訪問該目錄。說明:說明:Order 定義了定義了allow與與deny指令的執(zhí)行順序,指令的執(zhí)行順序,如果二者有矛盾的話,以后執(zhí)行的指令為準(zhǔn)。需如果二者有矛盾的話,以后執(zhí)行的指令為準(zhǔn)。需要注意的是要注意的是allow、deny指令的執(zhí)行順序與下面指令的執(zhí)行順序與下面的的Allow from 、Deny from語句的書寫順序無關(guān)。語句的書寫順序無關(guān)。24主機訪問控制示例三:主機訪問控制示例三: Order allow,deny Allow from all Deny from all功能:禁止所有主機從任何地點訪問該目錄。功能:禁止所有主機從任何
23、地點訪問該目錄。 Order deny ,allow Allow from 23 Deny from 23功能:允許功能:允許IP地址為地址為23的主機可以訪的主機可以訪問該目錄。問該目錄。25 關(guān)于主機訪問控制有以下說明:關(guān)于主機訪問控制有以下說明:1)Order 命令中指定的順序至關(guān)重要,寫在后面命令中指定的順序至關(guān)重要,寫在后面的關(guān)鍵字有最終決定權(quán)。的關(guān)鍵字有最終決定權(quán)。2)IP地址的表示方法比較靈活,可以有如下寫法:地址的表示方法比較靈活,可以有如下寫法:網(wǎng)絡(luò)網(wǎng)絡(luò)/子網(wǎng)掩碼子網(wǎng)掩碼:如:如/
24、。CIDR規(guī)范規(guī)范:如:如/24。單個單個IP地址地址的表示:的表示:23。3)支持域名支持域名例如,例如,Allow from 功能:表示允許功能:表示允許域中所有主機訪問。域中所有主機訪問。 26632 用戶訪問控制用戶訪問控制 下面通過示例來具體介紹認(rèn)證授權(quán)的實現(xiàn)。下面通過示例來具體介紹認(rèn)證授權(quán)的實現(xiàn)。(1)首先,編輯)首先,編輯Apache的主配置文件的主配置文件httpd.conf,在需要進行認(rèn)證授權(quán)的目錄中進行配置。在需要進行認(rèn)證授權(quán)的目錄中進行配置。#對目錄對目錄“/var/www/html/test”進行
25、訪問控制。進行訪問控制。AllowOverride AuthConfig #表示允許覆蓋,即允許在文件表示允許覆蓋,即允許在文件.htaccess中使用認(rèn)中使用認(rèn)證授權(quán)。證授權(quán)。說明:說明:.htaccess應(yīng)該位于應(yīng)該位于“/var/www/html/test”目錄中目錄中。另外,。另外,AllowOverride的值還可以是的值還可以是All,也能實現(xiàn)此功能。也能實現(xiàn)此功能。27(2)在需要認(rèn)證和授權(quán)的目錄中,即)在需要認(rèn)證和授權(quán)的目錄中,即“/var/www/html/test”目錄中創(chuàng)建名目錄中創(chuàng)建名為為.htaccess的文件,其內(nèi)容如下:的文件,其內(nèi)容如下:AuthName “Te
26、st Area”AuthType Basic AuthUserFile /var/mypasswd Require valid-user 28(3)創(chuàng)建口令文件。)創(chuàng)建口令文件。按照.htaccess中AuthUserFile指定的文件名,來創(chuàng)建口令文件/var/mypasswd。執(zhí)行如下命令:#htpasswd c /var/mypasswd myuser1功能:創(chuàng)建/var/mypasswd文件,同時將用戶myuser1加入該文件中;其中-c:表示創(chuàng)建。注意只在第一次創(chuàng)建口令文件使用-c,以后再添加新用戶時不要帶-c參數(shù),請看如下示例:# htpasswd /var/mypasswd my
27、user2 29(4)將口令文件的屬主改為)將口令文件的屬主改為apache。# chown apache.apache /var/mypasswd說明:因為在運行Apache服務(wù)器時是以apache的身份運行的,而在進行認(rèn)證過程時需要訪問口令文件/var/mypasswd,所以需要將口令文件的屬主改為apache。 30 執(zhí)行了以上步驟后,即可重新啟動Apache服務(wù)器。#service httpd restart在客戶機上,進行認(rèn)證授權(quán)的測試,在瀏覽器地址欄中輸入如下內(nèi)容:02/test/效果如圖6-1所示:31圖圖6-1認(rèn)證授權(quán)認(rèn)證授權(quán)32圖圖6-2未通過與
28、通過認(rèn)證授權(quán)未通過與通過認(rèn)證授權(quán)33633 虛擬主機虛擬主機Apache實現(xiàn)的虛擬主機主要有實現(xiàn)的虛擬主機主要有3種類型:種類型: 一是一是基于基于IP地址地址的虛擬主機;的虛擬主機; 二是二是基于端口基于端口的虛擬主機;的虛擬主機; 三是三是基于名字基于名字的虛擬主機。的虛擬主機。 341基于基于IP地址的虛擬主機地址的虛擬主機 思路:在同一臺主機上配置多個IP地址,每個IP地址對應(yīng)一個虛擬主機。 第一步第一步,在一臺主機上配置多個IP地址,執(zhí)行如下命令。# ifconfig eth0:1 03 netmask 功能:eth0:1為eth0的子接口
29、,該命令創(chuàng)建了子接口eth0:1,同時為該接口配置了IP地址03。35第二步,編輯第二步,編輯Apache的配置文件,在文件的末尾追加以下的配置文件,在文件的末尾追加以下內(nèi)容:內(nèi)容: ServerAdmin DocumentRoot /www/iproot1 ServerName 02 ErrorLog logs/02-error_log CustomLog logs/02-access_log common ServerAdmin DocumentRoot /www/iproot2 ServerName 10.22.1.
30、103 ErrorLog logs/03-error_log CustomLog logs/03-access_log common36 第三步,建立兩個虛擬主機的文檔根目錄及相應(yīng)測試頁面。第三步,建立兩個虛擬主機的文檔根目錄及相應(yīng)測試頁面。#mkdir p /www/iproot1#mkdir p /www/iproot2#vi /www/iproot1/index.html內(nèi)容如下: this is the IP_based VirtualHost 02!#vi /www/iproot2/index.html內(nèi)容如下: this is
31、the IP_based VirtualHost 03! 37 第四步,運行與測試。#service httpd restart#elinks 02說明:利用RHEL 7.0中提供的文本瀏覽器elinks來測試。#elinks 03382基于端口的虛擬主機基于端口的虛擬主機 思路:在同一臺主機上針對一個IP地址和不同的端口來建立虛擬主機,即每個端口對應(yīng)一個虛擬主機。 第一步,建立新的子接口并配置IP地址為04# ifconfig eth0:2 04 netmask 255.255.
32、255.039 第二步,編輯Apache的主配置文件httpd.conf,增加監(jiān)聽的端口號8001和8002在Section 1 中增加兩行配置,分別監(jiān)聽8001和8002端口Listen 80Listen 8001Listen 800240第三步,編輯Apache的主配置文件httpd.conf,建立基于端口的虛擬主機配置段,內(nèi)容如下: ServerAdmin DocumentRoot /www/portroot1 ServerName 04 ErrorLog logs/04-8001-error_log CustomLog logs/0
33、4-8001-access_log common ServerAdmin DocumentRoot /www/portroot2 ServerName 04 ErrorLog logs/04-8002-error_log CustomLog logs/04-8002-access_log common413基于名字的虛擬主機基于名字的虛擬主機 思路:在同一臺主機上針對相同的IP地址和端口號建立基于名字的虛擬主機。 第一步,在DNS服務(wù)器的區(qū)域數(shù)據(jù)庫文件中增加兩條A記錄和兩條PTR記錄。為了不影響前面的虛擬主機,這里再增加一個子接口,并配置為
34、05。# ifconfig eth0:3 05 netmask 接下來,配置DNS以支持新的域名解析。DNS正向區(qū)域數(shù)據(jù)庫中增加的記錄如下:. IN A . IN A 0542 第二步,編輯Apache的主配置文件,激活基于名字的虛擬主機,并建立兩個基于名字的虛擬主機配置段。NameVirtualHost 05:80功能:針對05:80配置基于名字的虛擬主機。說明:這是非常重要的一條指令,正是該指令的作用才激活了基于名字的虛擬主機的功能。43NameVirtualHost 10
35、.22.1.105:80 ServerAdmin DocumentRoot /www/nameroot1 ServerName ErrorLog logs/-error_log CustomLog logs/-access_log common ServerAdmin DocumentRoot /www/nameroot2 ServerName ErrorLog logs/-error_log CustomLog logs/-access_log common 44第三步,建立兩個虛擬主機的文檔根及主頁。#mkdir -p /www/nameroot1#mkdir -p /www/namero
36、ot2#vi /www/nameroot1/index.html內(nèi)容如下: welcome to name_based VirtualHost .#vi /www/nameroot2/index.html內(nèi)容如下: welcome to name_based VirtualHost .45 第四步,運行與測試。#service httpd restart#elinks #elinks 4664 Apache的高級配置的高級配置641 重定向重定向Redirect 指令的格式如下:指令的格式如下:Syntax: Redirect status URL-path new-URL說明:說明:new-
37、URL不能是相對路徑,必須是不能是相對路徑,必須是FQDN。47 重定向示例一:重定向示例一:編輯Apache的主配置文件httpd.conf,在Section 2 main server configuration 中增加如下指令:Redirect /tools 02/oldtools功能:當(dāng)客戶訪問02/tools時,將被重定向為02/oldtools。48 重定向示例二:重定向示例二:Redirect permanent /one http:/ 303 /three http:/ 和和 Script
38、Alias配置指令。49642 重寫規(guī)則重寫規(guī)則 Apache的重寫規(guī)則模塊是一個基于正則表示式的重寫URL 的工具。 重寫規(guī)則模塊提供了包括路徑處理在內(nèi)完整的URL處理操作: 既可以應(yīng)用在Apache主配置文件主配置文件httpd.conf中(又稱為每服務(wù)器上下文per-server context), 又可以應(yīng)用在.htaccess 文件中文件中(又稱為每目錄上下文per-directory context)。 50 在進行URL的操作過程中,可以依據(jù)多種條件測試,例如:服務(wù)器變量環(huán)境變量HTTP首部各字段時間戳等。51 重寫規(guī)則的處理機制分為兩部分:第一是整個規(guī)則集整個規(guī)則集的處理流程;
39、第二是一條規(guī)則一條規(guī)則的處理流程。 521整個規(guī)則集的處理流程 注意注意:整個規(guī)則集的處理流程有些復(fù)雜,記住先從第一從第一條規(guī)則入手條規(guī)則入手,而不是寫在第一條規(guī)則前面的重寫條件。53 圖中的RewriteRule指令用來設(shè)置一條重寫規(guī)則,其格式如下: RewriteRule Pattern Substitution其中,Pattern是URL需要匹配的模版模版,是一個正則表達(dá)式,Substitution是重寫后的字符串是重寫后的字符串,即新的URL或新的文件名。 圖6-3中出現(xiàn)的另一條指令是RewriteCond,該指令用來設(shè)置重寫條件,其格式如下:RewriteCond TestStrin
40、g CondPattern其中,TestString可以包含變量、后向應(yīng)用及映射查詢結(jié)果等。CondPattern是條件模版,可以是是條件模版,可以是一個正則表達(dá)式一個正則表達(dá)式;將TestString與后面的CondPattern條件模版相比對,若二者相匹配,則執(zhí)行下一個重寫條件或執(zhí)行與其相關(guān)的重寫規(guī)則。 54當(dāng)重寫規(guī)則模塊收到一個URL請求后,按如下流程處理:1)按順序取出下一條要執(zhí)行的重寫規(guī)則。2)用當(dāng)前的當(dāng)前的URL與當(dāng)前重寫規(guī)則中的與當(dāng)前重寫規(guī)則中的Pattern進行進行比對比對,如果二者不匹配,則中止該規(guī)則的執(zhí)行,轉(zhuǎn)去執(zhí)行步驟5);如果二者匹配,則執(zhí)行步驟3)。3)執(zhí)行與該規(guī)則相關(guān)
41、的重寫條件中的TestString,即展開展開TestString。接著,將將TestString與該重與該重寫條件中的寫條件中的CondPattern相比對相比對,如果二者不匹配,則中止該重寫條件的執(zhí)行,進而中止該重寫規(guī)則的執(zhí)行,轉(zhuǎn)去執(zhí)行步驟5);如果二者匹配,則執(zhí)行步驟4)。4)執(zhí)行該條重寫規(guī)則中的Substitution,即真正實現(xiàn)URL重寫操作。5)判斷是否為最后一條重寫規(guī)則是否為最后一條重寫規(guī)則,如果不是,則轉(zhuǎn)去執(zhí)行1),否則執(zhí)行6)。6)URL重寫完畢。 552一條規(guī)則的處理流程 Apache重寫模塊中允許一條重寫規(guī)則一條重寫規(guī)則可以與任意數(shù)量的重寫條件相關(guān)聯(lián)。 為解釋每一條重寫規(guī)
42、則的執(zhí)行過程,請參見圖6-4所示。56 一條重寫規(guī)則的執(zhí)行過程:57 Apache重寫模塊中,允許重寫規(guī)則可以沒沒有相關(guān)的重寫條件有相關(guān)的重寫條件,在這種情況下,仍然先判斷收到的URL與Pattern是否匹配,如果二者相匹配,則直接執(zhí)行Substitution,即完成URL重寫操作。 如果一條重寫規(guī)則與多條重寫條件多條重寫條件相關(guān)聯(lián),則在處理完URL與Pattern比對后,依次去執(zhí)行各重寫條件,如果其中有任何一條不滿足一條不滿足的話,都會中止該重寫規(guī)則中止該重寫規(guī)則的執(zhí)行。583重寫規(guī)則示例(1)源與目標(biāo)同在文檔根下示例)源與目標(biāo)同在文檔根下示例 本示例示例是指在文檔根(/var/www/ht
43、ml)下有兩個目錄,一個是原來存放文檔的舊目錄/var/www/html/realold1,一個是現(xiàn)在存放文檔的新目錄/var/www/html/realnew1。 客戶通過舊名字仍然可以訪問原來的文檔,即將/realold1/重定向到/var/www/html/realnew1目錄。 具體實現(xiàn)步驟如下:591)在Apache主配置文件主配置文件httpd.conf中,輸入以下內(nèi)容:#針對源(舊)目錄進行設(shè)置Options FollowSymLinks#要用重寫規(guī)則,必須激活FollowSymLinks選項AllowOverride All#允許覆蓋,即采用.
44、htaccess文件中的配置,下面在該文件中寫入重寫規(guī)則 #針對目標(biāo)(新)目錄進行設(shè)置Options FollowSymLinksAllowOverride None#不允許覆蓋602)創(chuàng)建源、目錄兩個目錄及測試文件#mkdir /var/www/html/realold1,new1#vi /var/www/html/realnew1/index.html內(nèi)容如下: this is /var/www/html/realnew1/index.html 613)在源(舊)目錄中創(chuàng)建.htaccess文件,內(nèi)容如下:RewriteEngine ONRewriteBase /realnew1/Rewr
45、iteRule (.*)$ $1 R=301說明說明:RewriteEngine ON激活重寫引擎。激活重寫引擎。RewriteBase /realnew1/是目錄級重寫指是目錄級重寫指令,用來設(shè)置重寫令,用來設(shè)置重寫URL的基礎(chǔ)目錄;的基礎(chǔ)目錄;62說明(續(xù))說明(續(xù))RewriteRule (.*)$ $1 R=301此指令有此指令有3部分參部分參數(shù):數(shù):第第1個參數(shù)個參數(shù)Pattern的值為的值為(.*)$,這是一個正則表達(dá),這是一個正則表達(dá)式,其含義是任意字符開頭或結(jié)尾的字符串,其式,其含義是任意字符開頭或結(jié)尾的字符串,其中中“()()”用來定義后向引用,也稱為組;用來定義后向引用,也
46、稱為組;第第2個參數(shù)個參數(shù)Subsititution的值是的值是$1,用來引用前面,用來引用前面Pattern中定義的第一對中定義的第一對“()()”中的內(nèi)容;中的內(nèi)容;第第3個參數(shù)個參數(shù)的值是的值是R=301,R表示外部重定向,表示外部重定向,301表示永久移動。表示永久移動。634)測試,在客戶機上輸入/realold1/,參見圖6-5所示。圖圖6-5 重寫規(guī)則應(yīng)用之重定向之前重寫規(guī)則應(yīng)用之重定向之前64按鍵后,出現(xiàn)如下內(nèi)容,參見圖6-6 圖圖6-6 重寫規(guī)則應(yīng)用之重定向效果重寫規(guī)則應(yīng)用之重定向效果 65(2)目標(biāo)不在文檔根下的示例)目標(biāo)不在文檔根下的示例
47、 本示例的文檔根仍為/var/www/html,源(舊)目錄為/var/www/html/realold2,目標(biāo)(新)目錄是/var/www/html2/realnew2。 很明顯二者不在同一個文檔根下,下面介紹具體實現(xiàn)步驟。661)編輯Apache主配置文件主配置文件httpd.conf,加入以下內(nèi)容:#針對源(舊)目錄進行設(shè)置Options FollowSymLinksAllowOverride AllAlias /aliasnew2/ /var/www/html2/realnew2/#給目標(biāo)(新)目錄定義別名為/aliasnew2/,后面.htaccess文件中要用到此別名 Option
48、s FollowSymLinks AllowOverride None說明:說明:由于源和目標(biāo)不在同一個文檔根下,在訪問時必須用別名必須用別名。672)創(chuàng)建源和目標(biāo)目錄及測試文件:#mkdir /var/www/html/realold2#mkdir /var/www/html2/realnew2#vi /var/www/html2/realnew2/index.html內(nèi)容如下: this is /var/www/html2/realnew2/index.html683)在源(舊)目錄/var/www/html/realold2中創(chuàng)建.htaccess文件,其內(nèi)容如下:RewriteEngine OnRewriteBase /aliasnew2/RewriteRule (.*)$ $1 R=301說明:此處需要說明的是,由于目標(biāo)(新)目錄不在文檔根下,所以在訪問時需要用到別名,在此處定義重寫基礎(chǔ)目錄時設(shè)置的目錄也為別名,而且與Apache主配置文件中定義的別名相同,即/aliasnew2/。其他指令的功能同上例,這里不再贅述。694)測試,在客戶機上輸入/realold2/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)品數(shù)字化交易平臺開發(fā)協(xié)議
- 年度企業(yè)文化建設(shè)與員工關(guān)懷計劃設(shè)計方案
- 聲聲慢:高中語文詩詞教學(xué)教案
- 水泥電桿銷售合同
- 語言之美:修辭手法與表達(dá)技巧
- 工業(yè)園區(qū)生產(chǎn)流水線供應(yīng)合同
- 季度銷售工作總結(jié)與業(yè)績分析報告
- 新零售行業(yè)線下實體店運營策略設(shè)計
- 企業(yè)危機公關(guān)事件處理預(yù)案
- 倉儲物流系統(tǒng)運營合作協(xié)議
- 醫(yī)學(xué)教程 常見動物咬蟄傷應(yīng)急救護課件
- 中學(xué)校園廣播聽力系統(tǒng)管理制度
- 組合型浮式防波堤水動力響應(yīng)與消浪性能研究
- 商業(yè)綜合體應(yīng)急預(yù)案編制與演練效果評估考核試卷
- GB/T 44679-2024叉車禁用與報廢技術(shù)規(guī)范
- 智鼎在線測評的題
- 2-3《書的歷史》(教學(xué)設(shè)計)二年級科學(xué)上冊 教科版
- 廣告學(xué)概論課件
- 可上傳班級管理(一到三章)李學(xué)農(nóng)主編
- 醫(yī)院環(huán)境衛(wèi)生學(xué)監(jiān)測和院感控制課件
- 春天古詩模板
評論
0/150
提交評論