2010-10-02 103 views
0

是否有任何方式使用.htaccess拒絕直接請求我的網站的特定部分,例如www.example.com/XXXXX拒絕直接請求使用.htaccess

我只想讓Referer只允許XXXXXX。我知道我必須以某種方式使用HTTP_REFERER來實現我的目標,但是目前我正在使用其他.htaccess規則,而不確定如何將所有規則組合在一起。這就是我現在所擁有的在我的.htaccess

選項+的FollowSymLinks RewriteEngine敘述 上的RewriteCond%{} REQUEST_FILENAME!-f 重寫規則^([^ /] +)$ /index.php?page= $ 1 [QSA,L]

回答

0

首先,我不知道我是否正確理解您的問題,但我試了一試。

目前您有:

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA,L] 

什麼你需要另外是:

RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC] 
RewriteRule XXXXXX/(.*)$ - [F,NC,L] 

的.htaccess RewriteRule的在它們發生的順序檢查,所以你可能想要做的這樣的事情,雖然我糾正,因爲沒有機會檢查它是否會工作:

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA] 
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC] 
RewriteRule XXXXXX/(.*)$ - [F,NC,L] 

也就是說,首先檢查它是否是一個名爲index.php的文件,如果不是(應該被重寫)(否L標誌),繼續下一條規則,首先獲取新條件,然後如果規則驗證,則限制訪問扔HTTP 403)。

這是否有意義? 無論如何,請試用上面的.htaccess示例,因爲正如我所說的,我無法測試它。