2013-06-22 183 views
0

我遇到問題,我想使用.htaccess保護我的網站的管理面板,但它的CGI腳本。阻止.htaccess中的特定網址並允許通過IP訪問

從web瀏覽器,它看起來像:當然其/cgi-bin/index.cgi?op=adminpanel的http://mysite.com/?op=adminpanel

我已經試過:

<files index.cgi?op=adminpanel> 
order deny,allow 
deny from all 
allow from my.ip.address 
</files> 

但不工作,當我使用<files index.cgi></files>時工作,但整個網站得到了403錯誤除了我的ip以外的每個人

現在我與測試:

RewriteEngine on 
RewriteCond %{REMOTE_ADDR} !(my.IP) 
RewriteCond %{QUERY_STRING} !(?op=adminpanel) 
RewriteRule index.cgi - [F] 

任何幫助將不勝感激

回答

2

this article你可以做這樣的:

比方說,你想阻止IP地址123.255。 123.255訪問www.mydomain.com/index.php?option=com_my_special_component頁面。這裏是你如何寫規則:

RewriteEngine On 
RewriteCond %{REMOTE_ADDR} ^123\.255\.123\.255 
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC] 
RewriteRule ^(.*)$ index.php [F,L] 

第一行只是打開URL重寫。第二行匹配IP地址(在每個點之前使用反斜槓),第三行匹配查詢字符串(即URL中的?之後的任何內容) - 在這種情況下,如果option = com_my_special_component位於URL中的任何位置之後 ? (例如,index.php?id = 1 & option = com_my_special_component & action = dostuff仍然會與此規則匹配)。該行末尾的[NC]指示它應用規則,而不管URL中的任何字符是大寫還是小寫。最後一行將用戶重定向到帶有'禁止'標頭的index.php - 這樣他們將在瀏覽器中收到一條錯誤消息,並告訴mod_rewrite停止解釋任何進一步的重寫規則。

如果你想禁止多個IP地址,您可以添加新線他們,但你需要一個[OR]標誌添加到每行末尾除了最後一個 - 例如:

RewriteEngine On 
RewriteCond %{REMOTE_ADDR} ^123\.255\.123\.255 [OR] 
RewriteCond %{REMOTE_ADDR} ^124\.255\.124\.255 [OR] 
RewriteCond %{REMOTE_ADDR} ^125\.255\.125\.255 
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC] 
RewriteRule ^(.*)$ index.php [F,L] 

由於您可以阻止訪問管理頁面,因此您可能只想允許您的IP。在這種情況下,你只需在IP地址前面加一個感嘆號來表示它是否是除此之外的任何IP,然後重寫。

RewriteEngine On 
RewriteCond %{REMOTE_ADDR} !^123\.255\.123\.255 
RewriteCond %{REMOTE_ADDR} !^124\.255\.124\.255 
RewriteCond %{REMOTE_ADDR} !^125\.255\.125\.255 
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC] 
RewriteRule ^(.*)$ index.php [F,L] 

希望有所幫助。

0

.htaccess文件中試試這個:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/admin 
RewriteCond %{REMOTE_ADDR} !=10.0.0.1 
RewriteCond %{REMOTE_ADDR} !=10.0.0.2 
RewriteCond %{REMOTE_ADDR} !=10.0.0.3 
RewriteRule ^(.*)$ - [R=403,L] 
if the url begins with /admin and the remote address is not one of the three listed, send the browser on its merry way. 

參考:https://www.concrete5.org/community/forums/chat/restrict-urls-starting-with-abc-to-specific-ips-.htaccess-guru

你可以改變這一行(RewriteCond %{REQUEST_URI} ^/admin)本:

RewriteCond %{REQUEST_URI} .*/admin

非常網址包含「/ admin」 的。

相關問題