xyl*_*lar 23 apache .htaccess mod-rewrite
目前我使用以下方法重定向除IP 12.345.678.90以外的所有用户:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance$
RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90
RewriteRule $ /maintenance [R=302,L]
Run Code Online (Sandbox Code Playgroud)
我将使用什么语法来允许范围?在我的允许列表中,我有:
Allow from 123.45.678.90/28
Run Code Online (Sandbox Code Playgroud)
如果我只是将REMOTE_HOST行更新为:
RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90/28
Run Code Online (Sandbox Code Playgroud)
Jon*_*Lin 22
您可能希望%{REMOTE_ADDR}匹配,但您不能使用CIDR表示法,因为%{REMOTE_ADDR}它实际上是远程地址,您可以使用正则表达式尝试匹配它.因此,对于123.45.67.89/28,(123.45.67.80 - 123.45.67.95),您必须执行以下操作:
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.8[0-9]$
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.9[0-5]$
Run Code Online (Sandbox Code Playgroud)
zts*_*zts 22
如果您使用的是Apache HTTPD 2.4或更高版本,则可以使用表达式将REMOTE_ADDR与CIDR掩码进行匹配.
简短形式如下:
RewriteCond expr "-R '192.168.1.0/24'"
Run Code Online (Sandbox Code Playgroud)
还提供了以下更长的表单,但文档表明效率较低:
RewriteCond expr "%{REMOTE_ADDR} -ipmatch '192.168.1.0/24'"
Run Code Online (Sandbox Code Playgroud)
这使得您的示例的完整解决方案如下:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance$
RewriteCond expr "! -R '12.345.678.90/28'"
RewriteRule $ /maintenance [R=302,L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39459 次 |
| 最近记录: |