2012-07-04 42 views
0

我在我的網站上使用URL重寫,我想通過.htpasswd文件添加一個身份驗證到我的目錄之一。URL重寫和htpasswd

我的網站是建立這樣

/home/website/ 
/home/website/protected/ 
/home/website/protected/.htaccess 
/home/website/protected/.htpasswd 
/home/website/protected/admin.php 
/home/website/.htaccess 
/home/website/index.php 
/home/website/index_protected.php 

開/家/網站/目錄我有一個.htaccess文件:

RewriteRule ^directory([0-9]+)/protected/([a-z0-9-_]+).php /home/website/protected/admin.php?d=$1&p=$2 [QSA] 

使用URL像

http//website/directory1/protected/test.php 

你會致電

/home/website/1/protected/admin.php?d=1&p=test 

在從/保護/目錄下,我得到的.htaccess:

AuthName "Page d'administration protégée" 
AuthType Basic 
AuthUserFile "/home/website/protected/.htpasswd" 
Require valid-user 

以及從/保護/目錄下,我得到htpasswd的:

admin:crypted_password 

但我的問題是,當我打電話

http//website/directory1/protected/test.php 

我從來沒有認證窗口,任何想法來解決這個問題?

回答

0

您可以嘗試將帶有基本認證指令的.htaccess文件放置到受保護的目錄中。

+0

也許我不明白,但在我的/保護/目錄我已經得到。「基本認證」指令.htaccess文件 – Natha

+0

對不起,當然,我發現它在你的問題。 –

+0

Np,感謝嘗試幫助我 – Natha

0

這種情況主要發生在服務器未使用.htaccess文件時。檢查是否允許在/ home/website/protected///home/website /中使用該文件。

+0

Nop,如果我打開URL http://website/protected/admin.php身份驗證窗口打開,所以它似乎被允許 – Natha

+0

等等,所以你得到身份驗證屏幕上的網站/保護/admin.php,但不是在網站/保護/ test.php?嘗試在認證規則之後添加RewriteRule。也許這就是搞砸你。 – Peon

+0

事實上,我得到.htaccess文件,第一個/網站/與重寫規則和第二個在/網站/保護/與認證規則。 在/website/protected/admin.php我需要有$ _GET ['d']和$ _GET ['p']這是從第1個.htaccess(重寫規則)給出的。 test.php頁面不存在,url重寫只是將其轉換爲p = test併發送到/website/protected/admin.php文件 – Natha