雖然ExpressionEngine提供了自己的手段Template Access Restriction密碼保護的網頁和模板— 包括處理的.htaccess Apache的基本HTTP認證 —有,你可能不想或不能的情況下,使用它:
如果你是DIY類型,你可以修改你httpd.conf
限制和密碼保護訪問ExpressionEngine頁面,輸入和模板。
這種技術的工作原理是:
- 編輯Apache的
httpd.conf
- 創建
.htpasswd
或.htgroup
文件
- 指定網址保護
注:由於我們正在嘗試要匹配URL級別的對象而不是物理文件系統,我們必須使用<Location>
或<LocationMatch>
指令。
把你的服務器的httpd.conf
或vhost.conf
文件執行以下操作:
<LocationMatch "^/private">
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/website/.htpasswd
AuthGroupFile /dev/null
Require valid-user
</LocationMatch>
確保該指令的值更改爲您的喜好和你的主機環境。
如果您還沒有準備好,創建.htpasswd
密碼文件加密所需的密碼,或者使用命令行或Online .htaccess Password Generator:
htpasswd -c /path/to/website/.htpasswd username
如果htpasswd命令是不是在你的Unix路徑,你必須輸入文件的完整路徑才能運行。我的服務器上,這將是:
/usr/sbin/htpasswd -c /path/to/website/.htpasswd username
然後,htpasswd的會問你的用戶的密碼,並要求你再次輸入以確認:
# htpasswd -c /path/to/website/.htpasswd username
New password: changeme
Re-type new password: changeme
Adding password for user username
一切就緒並且在工作之前,對/private*
的任何請求將在Apache路由到ExpressionEngine之前由Apache處理。
瞧—阿帕奇密碼保護的目錄和諧正與ExpressionEngine(或任何CMS真的,如WordPress,MovableType的或的Textpattern)。
的<Location>
指令的context指定,它只能在server config
和virtual host
配置文件中使用。這意味着我們不能將規則放在.htaccess
文件中,否則Apache會拋出一個500內部服務器錯誤,其描述爲「此處不允許位置」。
- 如果您正試圖在URL級別相匹配的對象,則必須使用
<Location>
- 如果您正試圖在文件系統級別相匹配的對象,則必須使用
<Directory>
和/或<Files>
來源
2011-07-07 20:50:23
rjb
嗨rjb,這也是我的第一個想法。但是,該模板被其他需要自由訪問的條目使用。從你的評論,雖然看起來我可能需要創建一個私人模板。 htaccess是一個可行的選擇? – fmz
這真的是最好的和最簡單的選擇。謝謝。 – fmz