每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]
希望有所帮助。