#httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "D:/wamp/www/laravel"
ServerName laravel.com
</VirtualHost>
#不要忘記修改hosts檔案
<VirtualHost *:80>
#設定伺服器返回給客戶端的錯誤資訊中包含的管理員郵件地址
ServerAdmin webmaster@dummy-host.example.com
#專案入口處的資料夾
DocumentRoot "D:/xampp/htdocs/wherein"
#建立重定向URL
ServerName www.shop_dev.com
#伺服器遇到錯誤時記錄錯誤日誌的檔案
ErrorLog "logs/wherein.com-error.log"
#設定日誌檔案,並指明日誌檔案所用的格式
CustomLog "logs/wherein.com-access.log" common
<Directory "D:/xampp/htdocs/wherein"> #為主目錄或虛擬目錄設定許可權
#目錄許可權
Options FollowSymLinks IncludesNOEXEC Indexes
#訪問目錄後進入的預設檔案
DirectoryIndex index.html index.htm index.php
AllowOverride all
#控制目錄和檔案的訪問許可權
Order Deny,Allow
#允許全部
Allow from all
</Directory>
</VirtualHost>
1. ServerAdmin指令:
語法: ServerAdmin email-address|URL
用來設定伺服器返回給客戶端的錯誤資訊中包含的管理員郵件地址。便於使用者在收到錯誤資訊後能及時與管理員取得聯絡。
2. DocumentRoot指令:
語法:DocumentRoot directory-path
用來設定httpd提供服務的目錄。即你所在專案入口處的資料夾。
3. ServerName指令:
語法:ServerName [scheme://] FQDN [:port]
用來設定伺服器用於辨識自己的主機名和埠號。主要用於建立重定向URL。
4. ErrorLog指令:
語法: ErrorLog file-path
來設定當伺服器遇到錯誤時記錄錯誤日誌的檔案。如果file-path不是以/開頭的絕對路徑,那麼將會被認為是一個相對於ServerRoot的相對路徑。
5. CustomLog指令:
語法: ErrorLog file-path common
設定日誌檔案,並指明日誌檔案所用的格式(通常通過格式的名字)。
6. <Directory 目錄路徑>…
為主目錄或虛擬目錄設定許可權。
特性:
Options FollowSymLinks IncludesNOEXEC Indexes
命令 | 說明
–|–
Indexes | 允許目錄瀏覽 當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪個檔案,而且目錄下不存在預設文件時,Apache以超文字形式返回目錄中的檔案和子目錄列表(虛擬目錄不會出現在目錄列表中)
MultiViews | 允許內容協商的多重檢視 MultiViews其實是Apache的一個智慧特性。當客戶訪問目錄 中一個不存在的物件時,如訪問”http://192.168.66.6/data/a",則Apache會查詢這個目錄下所有a.\*檔案。由於 data目錄下存在a.gif檔案,因此Apache會將a.gif檔案返回給客戶,而不是返回出錯資訊
All | All包含了除MultiViews之外的所有特性,如果沒有Options語句,預設為All
ExecCGI | 允許在該目錄下執行CGI指令碼
FollowSymLinks | 可以在該目錄中使用符號連線
Includes | 允許伺服器端包含功能
IncludesNoExec | 允許伺服器端包含功能,但禁用執行CGI指令碼
一旦定義允許目錄瀏覽,就會將Web站點的資料夾和檔名結構暴露給黑客。目錄瀏覽還會允許黑客瀏覽檔案並掌握伺服器配置資訊,所以指定該許可權往往帶來安全性上的隱患。除非有充足的理由要使用目錄瀏覽,否則應該禁用它。
DirectoryIndex index.html index.htm index.php
設定訪問目錄後進入的預設檔案
AllowOverride all (www.upupw.net/server/n73.html)
AllowOverride從字面上解釋是允許覆蓋的意思,即Apache允許另一配置檔案覆蓋現有配置檔案。
我們通常利用Apache的rewrite模組對URL進行重寫,rewrite規則會寫在 .htaccess 檔案裡。但要使 apache 能夠正常的讀取.htaccess 檔案的內容,就必須對.htaccess 所在目錄進行配置。
從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override,即:None
在 AllowOverride 設定為 None 時, .htaccess 檔案將被完全忽略。當此指令設定為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。
而對於 URL rewrite 來說,至少需要把目錄設定為:FileInfo
Order Deny,Allow(blog.csdn.net/wlzx120/article/deta...)
Allow from all
設定預設的訪問許可權與Allow和Deny語句的處理順序allow, deny:預設禁止所有客戶機的訪問,且Allow語句在Deny語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Deny語句會起作用(因為Deny語句覆蓋了Allow語句)。deny, allow:預設允許所有客戶機的訪問,且Deny語句在Allow語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Allow語句會起作用(因為Allow語句覆蓋了Deny語句)。
- eg
Order deny ,allow
Deny from baidu.com
#除了來自baidu.com域和ip地址為192.168.66.6的客戶機外,允許所有客戶機訪問Order deny ,allow
Deny from 192.168.66.6
Allow from 192.168.66.6
#既匹配Deny語句又匹配Allow語句,由於allow語句覆蓋了deny語句,所以是允許所有客戶機訪問Order
Deny from 192.168.66.1 allow ,deny
Allow from 192.168.66.6
#既匹配Deny語句又匹配Allow語句,由於deny語句覆蓋了allow語句,所以是禁止所有客戶機訪問
Deny from 192.168.66.1
- Require
Require all granted #允許所有
Require all denied #拒絕所有
Require env env-var [env-var] ... #允許匹配環境變數中任意一個
Require method http-method [http-method] ... #允許特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require expr expression #允許,表示式為true
Require user userid [ userid ] ... #允許特定使用者
Require group group-name [group-name] ... #允許特定使用者組
Require valid-user # #允許,有效使用者
Require ip 192.100 192.168.100 192.168.100.5 #允許特定IP或IP段,多個IP或IP段間使用空格分隔
如果想讓局域訪問不要忘記資料庫許可權(mysql本身的使用者只能在本機上連線資料庫,外網連線的話,需要先新增遠端使用者並授權。)
本作品採用《CC 協議》,轉載必須註明作者和本文連結