2012-03-28 127 views
1

我想限制某些特定PDF文件的訪問權限,但是我的Apache配置有點麻煩。我已經得到了FilesMatch指令的工作方式如下:在DirectoryMatch中使用FilesMatch進行Apache基本身份驗證

<FilesMatch "\.pdf$"> 
    AuthName "Permission Required" 
    AuthUserFile /path/to/.htpasswd" 
    Require valid-user 
    AuthType Basic 
</FilesMatch> 

現在我明白了,我不能在只是我的.htaccess文件更具體的,所以我不得不使用LocationMatch或DirectoryMatch在我配置文件。我試過以下,但沒有成功:

<VirtualHost *:80> 
    DocumentRoot "/var/www/somedomain.com/httpdocs" 
    ServerName somedomain.com:80 
    ServerAlias somedomain.com 
    <DirectoryMatch "^/uploads/(dir1|dir2)"> 
     <FilesMatch "\.pdf$"> 
     AuthName "Permission Required" 
     AuthUserFile "/var/www/somedomain.com/bin/.htpasswd" 
     Require valid-user 
     AuthType Basic 
     </FilesMatch> 
    </DirectoryMatch> 
</VirtualHost> 

實際文件位於:http://www.somedomain.com/uploads/dir1/somefile.pdf

我敢肯定,這是簡單的東西,但我不能讓它正常工作。

+0

你打開'FilesMatch'並沒有關閉它(這適用於'DirectoryMatch')。 – undone 2012-03-28 15:38:11

+0

對不起,我從錯誤的地方複製/粘貼 - 我確實有這條線未評論(現在在我的代碼中修復) – 2012-03-29 08:13:14

回答

2
<VirtualHost *:80> 
    DocumentRoot "/var/www/somedomain.com/httpdocs" 
    ServerName somedomain.com:80 
    ServerAlias somedomain.com 
    <DirectoryMatch "^/var/www/somedomain.com/httpdocs/uploads/(dir1|dir2)"> 
     <FilesMatch "\.pdf$"> 
     AuthName "Permission Required" 
     AuthUserFile "/var/www/somedomain.com/bin/.htpasswd" 
     Require valid-user 
     AuthType Basic 
     </FilesMatch> 
    </DirectoryMatch> 
</VirtualHost> 

我發現有什麼問題。對不起,我最初沒有注意:)。 Probelm是DirectoryMatch完全像Directory,但它需要使用正則表達式作爲參數。所以,當你的文檔根目錄爲/var/www/somedomain.com/httpdocs然後上傳目錄應標明這樣

<DirectoryMatch "^/var/www/somedomain.com/httpdocs/uploads/(dir1|dir2)"> 
     #Somemthibg goes here :-D 
</DirectoryMatch> 
+0

Doh!很近。感謝你的回答 – 2012-03-29 10:55:51

相關問題