需求比标题复杂些,如下:
(1)在dns注册 *.test.com的域名指向一台服务器,如:210.87.12.5
(2)在这台服务器上,安装有web程序,该程序可以根据用户输入的二级域名跳转到该用户的产品主页
(3)对于非法的域名指向,进行rewrite处理(返回404错误,否则一经被查,断电处理)
(4)用户访问合法的域名但不是https连接的,跳转到https页面(即若是80端口则跳转到443端口)
(5)对于指定的二级域名,只准许某个(些)ip访问
针对各个需求作如下处理:
需求1:简单,在dns注册泛域名即可
需求2:纯粹的程序处理,略过
需求3:rewrite规则如下:
RewriteCond %{HTTP_HOST} !^abc|^apple|^banana|^demo\.test\.com [NC]
RewriteRule ^/$ default [R=404]
即:不是我上面列出的域名,其他的都返回404错误。这里注意每一项的前面都要加^
需求4:rewrite规则如下:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
需求5:rewrite规则如下:
RewriteCond %{REMOTE_ADDR} !^124.11.12.141 [OR]
RewriteCond %{REMOTE_ADDR} !^124.11.12.142 [NC]
RewriteCond %{HTTP_HOST} ^abc\.test\.com [NC]
RewriteRule ^/$ default [R=404]
即:如果用户的ip不是124.11.12.141或124.11.12.142但却访问了 abc.jobkoo.com 则直接返回404错误,也就是说只有列出的ip可以访问。
注意:
(1)由于本机同时开放了80和443端口,因此在设置rewrite规则时需要在两端口的虚拟主机配置中同时添加。
(2)rewrite是有顺序的,我这里的顺序如下:
# 限制ip访问域名
RewriteCond %{REMOTE_ADDR} !^124.11.12.141 [OR]
RewriteCond %{REMOTE_ADDR} !^124.11.12.142 [NC]
RewriteCond %{HTTP_HOST} ^abc\.test\.com [NC]
RewriteRule ^/$ default [R=404]
# 拒绝非法域名指向
RewriteCond %{HTTP_HOST} !^abc|^apple|^banana|^demo\.test\.com [NC]
RewriteRule ^/$ default [R=404]
# 非443端口跳转
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
阅读(801) | 评论(0) | 转发(0) |