2011-05-23 157 views
0

我正在使用沒有認證模塊的Expression Engine 2 Freelancer editon。嘗試使用htaccess密碼保護URL

我想密碼保護,有一個虛擬目錄www.domain.com/template模板組

我所要做的是使用htaccess的根迫使人們進入用戶名和密碼,當他們嘗試導航到「模板」部分及其下的兩個文件時。

表達式引擎處理模板的方式被路由到物理目錄而不是物理目錄。

我的問題是我如何密碼保護這個網址,我試過使用LocationMatch,但它沒有工作?

感謝

+0

最好在ServerFault上解答。 – 2011-05-23 12:27:10

回答

0

你不能有效地保護mod_rewritten URL(如果有可能的話)。攻擊者只需訪問被保護的URL被重寫到的物理位置 - 在這種情況下,您將離開不受保護的位置。

我想,你仍然必須在PHP方面做到這一點。如果您的PHP作爲Apache模塊運行,應該可以檢查請求的資源是否屬於受保護的目錄(通過QUERY_STRING或其他指示符),然後發送請求驗證的正確標頭,如在PHP手冊中描述的here

0

從URL中刪除index.php的哪種方法正在使用?

如果您使用的是「File and Directory Check」的方法,你可以修改已有Apache mod_rewrite規則,排除某個目錄,同時還允許所有其他請求直通index.php運行。

例如,使用基地「文件和目錄檢查」重寫規則:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule> 

使用這種方法,阿帕奇檢查,看是否存在文件或目錄 - 如果它的文件送達瀏覽器;如果它不存在,則通過index.php發送並解析爲ExpressionEngine URI

要排除目錄,加入你的.htaccess基本身份驗證password-protected directory修改重寫規則:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} !^/(secret-directory|secret-directory/.*)$ 
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule> 

我不完全知道什麼所有的限制都與自由職業者許可,但我answered a similar question about password-protecting pages in ExpressionEngine這可能會證明對您的情況有幫助。