Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。而很多朋友限制访客访问服务器和网站都是通过网站程序来实现的。
其实完全可以对服务器配置实现访问限制,而且通过对服务器配置实现的访问限制比在程序中设置访问限制更安全可靠。
下面就以实例来实现通过htaccess配置文件来实现访问控制。
1、实现不同的 IP 访问网站展示不同的内容
服务器域名:http://fx43.caseuuu.top/
配置内容:
RewriteEngine On
<IfModule mod_rewrite.c>
RewriteCond %{http:X-Forwarded-For}&%{REMOTE_ADDR} (59.42.239.150) [NC]
RewriteRule (.*) guangzhou1.html [NC]
RewriteCond %{http:X-Forwarded-For}&%{REMOTE_ADDR} (223.104.1.252) [NC]
RewriteRule (.*) guangzhou2.html [NC]
</IfModule>guangzhou1.html 页面的内容:
<html> <head> <meta charset="utf-8"> <title>广州页面-PC端</title> </head> <body> 广州-pc页面:页面内容 </body> </html>
guangzhou2.html 页面内容
<html> <head> <meta charset="utf-8"> <title>广州页面-移动端</title> </head> <body> 广州-移动端页面:页面内容 </body> </html>
下面分别在PC端和手机移动端访问 http://fx43.caseuuu.top/

PC端的访问结果

移动端的访问结果
从访问结果来看,虽然访问的是同一个域名,但看到的内容却完全不一样,这就说明IP控制生效了。
2、实现不同浏览器访问展现不同内容的访问控制
配置内容
RewriteEngine On
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_USER_AGENT} ^.*(iPhone|iPad).*
RewriteRule (.*) ipad.html?$1 [L]
RewriteCond %{HTTP_USER_AGENT} ^.*(Android).*
RewriteRule (.*) android.html?$1 [L]
</IfModule>ipad.html 页面内容:
<html>
<head>
<meta charset="utf-8">
<title>ipad-页面</title>
<style>
body{font-size:5rem;}
</style>
</head>
<body>
ipad.html 页面
</body>
</html>android.html页面内容:
<html>
<head>
<meta charset="utf-8">
<title>Android-页面</title>
<style>
body{font-size:5rem;}
</style>
</head>
<body>
Android.html 页面
</body>
</html>访问结果:

电脑浏览器、苹果系统浏览器、安卓系统浏览器访问所展现的内容都不一样,而且后面的参数也完整的保留了下来。
3、实现不同访问来源展现不同内容的访问控制
配置内容:
RewriteEngine On
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_REFERER} ^http://www.a.com.* [NC]
RewriteRule (.*) a.html?$1 [L]
RewriteCond %{HTTP_REFERER} ^http://www.test.com.* [NC]
RewriteRule (.*) test.html?$1 [L]
</IfModule>a.html页面内容:
<html>
<head>
<meta charset="utf-8">
<title>a-页面</title>
<style>
body{font-size:2rem;}
</style>
</head>
<body>
通过 www.a.com 进来
</body>
</html>test.html页面内容:
<html>
<head>
<meta charset="utf-8">
<title>test-页面</title>
<style>
body{font-size:2rem;}
</style>
</head>
<body>
通过 www.test.com 进来
</body>
</html>访问结果:

在 www.a.com/index.html 页面和 www.test.com/index.html 虽然点击的是同一个链接,但看到的内容却不一样,正好实现了不同访问来源的访问控制。
【补充】
如果想实现不允许访问只需修改RewriteRule
改成:
RewriteRule (.*) - [F]
之后在访问就变成403了。
