2012-02-09 114 views
1

我有一個登臺站點,我已經使用.htaccess密碼保護它。允許查詢字符串通過.htaccess密碼保護

但是,由於這是一個電子商務網站,我需要貝寶的IPN才能夠與我的網站進行通信。

我使用下面的.htaccess,但它不工作。密碼保護仍然有效。

Deny from all 
Order deny,allow 
AuthType Basic 
AuthName "Restricted Area" 
AuthUserFile "/path/to/htpasswd" 
require valid-user 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{QUERY_STRING} ^paypalListener=paypal_standard_IPN$ 
    RewriteRule .* - [E=test_uri] 
</IfModule> 

#Allow valid-user 
Allow from env=test_uri 
Satisfy any 

誰能指導我這裏有什麼問題嗎?

+0

實際上會發生什麼?你會得到一個500服務器錯誤,或者它只是要求密碼,即使是貝寶網址? – talereader 2012-02-09 14:25:23

+0

密碼保護仍然有效,所以我想知道我的規則是否寫錯了? – witherspoon 2012-02-09 14:35:14

回答

0

好吧,從我所看到的,[E=test_uri]只是將「test_uri」設置爲空字符串,所以什麼也不做。此外,Allow from預計IP或域名(例如貝寶的服務器向您的網站發出請求)。

因此,它可能工作,如果你正確的環境變量設置爲遠程地址發出請求,就像這樣:

RewriteRule .* - [E=test_uri:%{REMOTE_ADDR}] 

我不能現在雖然測試這個權利。

還要確保服務器的.conf文件中沒有其他身份驗證規則,並且解析了.htaccess文件中的身份驗證指令(Options AuthConfig)。

+0

嘿謝謝,但同樣的問題仍然存在。我的方法實際上來自這裏http://css-tricks.com/snippets/htaccess/allow-single-url/但因爲我想允許查詢字符串我結束了使用國防部重寫 – witherspoon 2012-02-09 14:58:05

+0

我測試了這一點,並在本地主機上'test_uri'被設置爲127.0.0.1。當我使用'Allow from 127.0.0.1'時,密碼保護關閉。但是,將所有這些結合起來並使用'Allow from env = test_uri'(這是一個有效的語句)不起作用,並且'test_uri'會被取消設置。即使您使用有效的用戶名/密碼登錄,「test_uri」也會被取消設置。我很困惑。 – talereader 2012-02-09 15:26:58

+0

現在真的讓人難以置信。我試過uri和ip以及他們都很好。 – witherspoon 2012-02-09 17:47:24