=======================說在前面的話============php
1:此次實驗使用的php項目是Discuz,Discuz的安裝請參照:https://blog.51cto.com/wangxiaoke/2175981html
===================如今開幹===================正則表達式
在本次實驗中咱們使用以下標籤:bash
<Directory 「目錄」> ... </Directory>服務器
<Filesmatch 「文件」> ... </Filesmatch>ide
<Location 「URL」> ... </Location> post
第一:<Directory 「目錄」></Directory>標籤講解ui
說明:針對目錄作權限限制spa
1:標籤結構code
以 <Directory 「目錄」> 開頭,中間填充選項參數,以 </Directory> 結尾
2:標籤位置
在 <VirtualHost *:80> 和 </VirtualHost> 標籤中間
3:標籤指令參數詳解
①:Options指令,Options指令後能夠附加指定多種服務器特性,特性選項之間以空格分隔,特性表以下:
All | 表示除MultiViews 以外的全部特性。這也是Options指令的默認設置。 |
None | 表示不啓用任何的服務器特性。 |
FollowSymLinks | 服務器容許在此目錄中使用符號鏈接。若是該配置選項位於<Location> 配置段中,將會被忽略。 |
Indexes | 若是輸入的網址對應服務器上的一個文件目錄,而此目錄中又沒有 (例如: 模塊生成的一個格式化後的目錄列表。 |
MultiViews | 容許使用 路徑可能對應多種類型的文件,那麼服務器將根據客戶端請求的具體狀況自動選擇一個最匹 配客戶端要求的文件。例如,在服務器站點的
沒有 據用戶請求的具體狀況返回最匹配要求的 |
SymLinksIfOwnerMatch | SymLinksIfOwnerMatch服務器僅在符號鏈接與目標文件或目錄的全部者具備相同的用戶 ID時才使用它。簡而言之,只有當符號鏈接和符號鏈接指向的目標文件或目錄的全部者是同 一用戶時,纔會使用符號鏈接。若是該配置選項位於 |
ExecCGI | 容許使用mod_cgi 模塊執行CGI腳本。 |
Includes | 容許使用mod_include 模塊提供的服務器端包含功能。 |
IncludesNOEXEC | 容許服務器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍能夠從 使用"#include virtual"虛擬CGI腳本。 |
②:AllowOverride指令,該指令用於指定是否使用.htaccess文件,參數有以下表:
All | 開啓.htaccess文件 |
None | 關閉.htaccess文件 |
③:Require指令,該指令用於指定容許、拒絕列表,在Apache2.2用的是下面這種
.
而在Apache2.4用的是 Require all granted 和 Require all denied這種方式,具體以下表:
Require all granted | 容許全部的訪問 |
Require all denied | 拒絕全部訪問 |
Require ip 10.2.2.32 | 容許10.2.2.32這個地址訪問 |
Require not ip 10.3.3.21 | 拒絕10.3.3.21這個地址訪問 |
Reuquire host baidu.com | 容許名爲baidu.com的域訪問 |
Reuquire not host baidu.com | 拒絕名爲baidu.com的域訪問 |
若是是一條規則,能夠直接使用,可是若是有多條規則,則必須把這些規則包含在以下元素當中:
<RequireAll> </RequireAll> | 在此元素中包含的規則,拒絕優先執行 |
<RequireAny> </RequireAny> | 在此元素中包含的規則,容許優先執行 |
舉例1:容許全部訪問,只拒絕192.168.1.103訪問
<RequireAll> Require all granted Require not ip 192.168.1.103 </RequireAll>
舉例2:拒絕全部訪問,只容許192.168.1.103訪問
<RequireAny> Require all denied Require ip 192.168.1.103 </RequireAny>
第二:<FilesMatch 「文件」> </FilesMatch>
說明:針對文件作權限限制,和Apache2.2版本的 <Files "文件"> </Files> 做用同樣,只不過新的這個支持正則表達式。
1:標籤結構
以 <FilesMatch 「文件」> 開頭,中間填充選項參數,以 </FilesMatch> 結尾
2:標籤位置
在 <VirtualHost *:80> 和 </VirtualHost> 標籤中間
3:標籤指令參數詳解:
①:Require指令,該指令用於指定容許、拒絕列表,在Apache2.2用的是下面這種
Order Deny,Allow
Deny All
Allow Form 10.3.33.3
而在Apache2.4用的是 Require all granted 和 Require all denied這種方式,具體以下表:
Require all granted | 容許全部的訪問 |
Require all denied | 拒絕全部訪問 |
Require ip 10.2.2.32 | 容許10.2.2.32這個地址訪問 |
Require not ip 10.3.3.21 | 拒絕10.3.3.21這個地址訪問 |
Reuquire host baidu.com | 容許名爲baidu.com的域訪問 |
Reuquire not host baidu.com | 拒絕名爲baidu.com的域訪問 |
若是是一條規則,能夠直接使用,可是若是有多條規則,則必須把這些規則包含在以下元素當中:
<RequireAll> </RequireAll> | 在此元素中包含的規則,拒絕優先執行 |
<RequireAny> </RequireAny> | 在此元素中包含的規則,容許優先執行 |
舉例1:容許全部訪問,只拒絕192.168.1.103訪問
<RequireAll> Require all granted Require not ip 192.168.1.103 </RequireAll>
舉例2:拒絕全部訪問,只容許192.168.1.103訪問
<RequireAny> Require all denied Require ip 192.168.1.103 </RequireAny>
第三:<LocationMatch "URL"> </LocationMatch>
說明:針對URL作權限限制,和Apache2.2版本的 <Location "URL"> </Location> 做用同樣,只不過新的這個支持正則表達式。
1:標籤結構
以 <LocationMatch 「文件」> 開頭,中間填充選項參數,以 </LocationMatch> 結尾
2:標籤位置
在 <VirtualHost *:80> 和 </VirtualHost> 標籤中間
3:標籤指令參數詳解:
①:Require指令,該指令用於指定容許、拒絕列表,在Apache2.2用的是下面這種
Order Deny,Allow Deny All Allow Form 10.3.33.3
而在Apache2.4用的是 Require all granted 和 Require all denied這種方式,具體以下表:
Require all granted | 容許全部的訪問 |
Require all denied | 拒絕全部訪問 |
Require ip 10.2.2.32 | 容許10.2.2.32這個地址訪問 |
Require not ip 10.3.3.21 | 拒絕10.3.3.21這個地址訪問 |
Reuquire host baidu.com | 容許名爲baidu.com的域訪問 |
Reuquire not host baidu.com | 拒絕名爲baidu.com的域訪問 |
若是是一條規則,能夠直接使用,可是若是有多條規則,則必須把這些規則包含在以下元素當中:
<RequireAll> </RequireAll> | 在此元素中包含的規則,拒絕優先執行 |
<RequireAny> </RequireAny> | 在此元素中包含的規則,容許優先執行 |
舉例1:容許全部訪問,只拒絕192.168.1.103訪問
<RequireAll> Require all granted Require not ip 192.168.1.103 </RequireAll>
舉例2:拒絕全部訪問,只容許192.168.1.103訪問
<RequireAny> Require all denied Require ip 192.168.1.103 </RequireAny>