目錄配置段
注釋不能寫在指令后面,下面這樣是不行的,應當換行,但為了閱讀方便我就這么寫了
Alias /dir/ "/var/www/html/admin" #路徑的別名 這樣就可以在域名后面加 /dir 而實際訪問的是 admin下面的文件
<Directory /var/www/html/>
Order Allow,Deny #權限的順序是先允許 后拒絕
Deny from 192.168.1.12 #拒絕192.168.1.12訪問
Allow from all #允許所有的訪問
Options Indexes FollowSymLink #允許目錄索引 符號鏈接
AllowOverride None #不能被目錄下的.htaccess覆蓋
# AllowOverride all 允許被目錄下的.htaccess規則覆蓋 默認是允許的
</Directory>
文件配置段
<Files "hello.html">
Order Deny,Allow #先拒絕 后允許
Deny from all #拒絕所有的訪問所有目錄下的hello.html文件
</Files>
如果文件配置段嵌套到目錄配置段,就只控制那個目錄下文件的訪問權限
url配置段
<Location /admin>
Deny from all #拒絕所有的訪問/admin這個url
</Location>
文件目錄url都可用通配符或正則
<Directory "/var/*/html/">
......
</Directory>
<FilesMatch \.(gif|png)>
Deny from all #拒絕訪問圖片
</FilesMatch>
Apache的虛擬主機配置
基於ip:
<VirtualHost 192.168.142.2:80>
ServerAdmin zhaoyp1985@163.com
DocumentRoot "/var/www/web1"
ServerName www.aaa.com
ErrorLog "/home/log/error/error.log"
CustomLog "/home/log/coustom/error.log"
</VirtualHost>
<VirtualHost 192.168.142.1:80>
ServerAdmin zhaoyp1985@163.com
DocumentRoot "/var/www/web1"
ServerName www.bbb.com
ErrorLog "/home/log/error/error.log"
CustomLog "/home/log/coustom/error.log"
</VirtualHost>
基於域名:
NameVirtualHost *:80
#保留原來的localhost
<VirtualHost *:80 >
ServerName *
DocumentRoot "/var/www/html"
</VirtualHost>
#虛擬主機www.aaa.com
<VirtualHost *:80 >
ServerAdmin zhaoyp1985@163.com
DocumentRoot "/var/www/web1"
ServerName www.aaa.com
ErrorLog "/home/log/error/error.log"
CustomLog "/home/log/coustom/error.log"
</VirtualHost>
#虛擬主機www.bbb.com
<VirtualHost *:80 >
ServerAdmin zhaoyp1985@163.com
DocumentRoot "/var/www/web2"
ServerName www.bbb.com
ErrorLog "/home/log/error/error.log"
CustomLog "/home/log/coustom/error.log"
</VirtualHost>
泛域名的解析
<VirtualHost *:80>
ServerName *.aaa.com
VirtualDocumentRoot /var/www/cct/home/%1
<Directory " /var/www/cct/home/" >
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
其中的%1是*.aaa.com的第一部分 見下面:
目錄名稱的轉換
本模塊中的所有指令都用於將字符串替換為路徑名。被替換的字符串(以后稱為"name")可以是服務器名(參見UseCanonicalName
指令以了解決策方法)或者是"點數字"格式的虛擬主機IP地址。替換操作由printf
格式修飾符控制,該修飾符有以下幾種格式:
%% |
插入一個百分號(% ) |
%p |
插入虛擬主機的端口號 |
%N.M |
插入名稱(或者名稱的一部分) |
N
和M
被用來指定name中的子字符串。N
從name中用小數點分隔的某部分中選取,而M
是從N
選中的字符串中選取部分字符。M
是可選的且默認為"0";小數點當且僅當M
存在時才必須書寫。替換操作如下:
0 |
整個name |
1 |
第一部分 |
2 |
第二部分 |
-1 |
最后一部分 |
-2 |
倒數第二部分 |
2+ |
從第二部分開始到最后的所有部分 |
-2+ |
倒數第二部分以及之前的各部分 |
1+ 和-1+ |
等同於0 |
如果N
或M
大於部分的個數,則簡單的用下划線來替換。