首先有一台linux服务器,上面有4个IP都可以指向这个服务器,有10个域名

4个IP分别是

1.1.1.1

1.1.1.2

1.1.1.3

1.1.1.4

10个域名分别是

a.com a.org  对应ip 1.1.1.1  对应网站目录在 /home/www/a

b.com b.org 对应ip 1.1.1.2  对应网站目录在 /home/www/b

c.com c.org c.net 对应ip 1.1.1.3  对应网站目录在 /home/www/c

d.com e.org f.net 对应ip 1.1.1.4 对应网站目录在 /home/www/d

现在想要实现这个效果

当输入ip地址 1.1.1.1  或者输入 a.com     a.org 时候,系统自动跳转到 www.a.com

当输入ip地址 1.1.1.2  或者输入 b.com     b.org 时候,系统自动跳转到 www.b.com

当输入ip地址 1.1.1.3  或者输入 c.com     c.org     c.net 时候,系统自动跳转到 www.c.com

当输入ip地址 1.1.1.4  或者输入 d.com     e.org      f.net时候,系统自动跳转到 www.e.org

当 输入  aaa.a.com bbb.a.com 111.a.com 222.a.org 等a.com 和 a.org  的不存在的二级域名时,自动跳转到 www.a.com 这个一级规范域名上.

需要做这几个方面的工作

第一种方法是修改服务器 第二种是修改目录,也就是增加一个.htaccess,第二种方法和第一种的内容其实是一样的,唯一需要注意的是修改目录的话,需要打开目录的FollowSymLinks,并且在.htaccess也要写上RewriteEngine on

也就是你修改网站目录所在地的那段,防止网站内容以列表的形式展示出来.(关闭是Options -Indexes FollowSymLinks,开启就是Options Indexes FollowSymLinks)

1: 打开域名管理的泛域名解析. 也就是增加域名的A记录  比如 a.com  ,  本来A记录那里有一条记录  @  指向 1.1.1.1  增加一条 * 指向 1.1.1.1 其它域名同

泛域名解析用在当这个二级域名没有内容时,或者是不存在时是比较有用的.如果存在二级域名对应的内容,比如 bbs.a.com forum.a.com shop.a.com mail就需要去域名的管理里面,增加cname,  host 写 bbs 或者 forum 或者 shop  mail等,指向 bbs.a.com forum.a.com shop.a.com  mail.a.com  其它同

保存域名修改 大约1个小时左右生效(godaddy的几分钟就生效了.)

2:打开apache的http.conf文件.

检查下LoadModule rewrite_module modules/mod_rewrite.so 是否开启,没有开启需要去掉#开启,并且检查下modules是否存在这个,如果没有需要重新编译这个模块

3: 在最后面增加下面的内容

NameVirtualHost 1.1.1.1:80

NameVirtualHost 1.1.1.2:80

NameVirtualHost 1.1.1.3:80

NameVirtualHost 1.1.1.4:80
RewriteEngine on

<VirtualHost 1.1.1.1:80>
ServerAdmin rainysia@gmail.com
DocumentRoot /home/www/a
ServerName www.a.com
ServerAlias *.a.com *.a.org
DirectoryIndex index.html index.htm index.php index.shtml index.shtm index.tpl
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.a.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.a.com/ [L]
</VirtualHost>

<VirtualHost 1.1.1.2:80>
ServerAdmin rainysia@gmail.com
DocumentRoot /home/www/b
ServerName www.b.com
ServerAlias *.b.com *.b.org
DirectoryIndex index.html index.htm index.php index.shtml index.shtm index.tpl
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.b.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.b.com/ [L]
</VirtualHost>

<VirtualHost 1.1.1.3:80>
ServerAdmin rainysia@gmail.com
DocumentRoot /home/www/c
ServerName www.c.com
ServerAlias *.c.com *.c.org *.c.net
DirectoryIndex index.html index.htm index.php index.shtml index.shtm index.tpl
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.c.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.c.com/ [L]
</VirtualHost>

<VirtualHost 1.1.1.4:80>
ServerAdmin rainysia@gmail.com
DocumentRoot /home/www/d
ServerName www.e.org
ServerAlias *.d.com *.e.org *.f.net
DirectoryIndex index.html index.htm index.php index.shtml index.shtm index.tpl
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.e.org [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*) http://www.e.org/ [L]
</VirtualHost>

然后保存退出后 /etc/init.d/httpd restart 重启apache既可生效

用www.a.com的重写规则来解释

!的意思是否 也就是说 RewriteCond 只要不是通过www.a.com,那么就转向到这个www.a.com,包括你通过IP,二级域名等来访问,都会因为这条而转向

apache的rewrite正则的一些定义, 完全是符合perl的正则

其中文本

. 表示一个单字符

[string]  字符类string中的任意一个字符

[^string] 字符类的非,也就是不在string中的字符

text1 | text2     或者条件  经常用在域名后缀, 比如  org | com | net 这种

计数   ? 前面的字符出现0或1次  * 当前就是0次或N次  + 就是出现1次或N次

分组 (text)   用于设置一个选择的边界,或者生成后引用, 在RewriteRule中可以用$N来引用第N个分组

锚   ^ 锚到行首   $ 锚到行尾

转义  \c 对给定的字符c进行转义  对其它的符号转义 比如" . [ ] ( ) 等等

中括号里面的内容的解释

1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联

如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。

8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

apache rewrite重定向规则,rewrite正则,二级域名指向一级域名,多域名指向一个域名,IP转向域名相关推荐

  1. 选择一个可靠知名的域名管理服务提供商

    网站安全一直是我们互联网运营商的一个常见话题.如何保持我们网站的安全稳定,长期承载我们公司的网上业务?网站安全问题也一直在考验站长运营商的互联网安全意识和网站管理维护能力. 今天,我想和你分享一些网站 ...

  2. IP,域名,DNS,端口

    IP(internet protocol)互联网协议:用于区分互联网中的主机. 127.0.0.1本机IP 域名(the domain name) domain>领域 :与主机IP直接关联,便于 ...

  3. dmitry 的主机IP及域名资产扫描使用

    无特征 工具介绍 DMitry(Deepmagic Information Gathering Tool)是信息收集工具.它可以用来收集以下信息: 1.端口扫描 2.从Netcraft.com获取主机 ...

  4. 如何在Apache环境下配置Rewrite规则

    原文链接:http://faq.comsenz.com/viewnews-12 URL 静态化是一个利于搜索引擎的设置,通过 URL 静态化,达到原来是动态的 PHP 页面转换为静态化的 HTML 页 ...

  5. php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...

    一般php的开发者本地使用的都是使用apache服务器,使用伪静态的时候每次都需要转换成nginx rewrite规则,于是做了个在线将Apache htaccess Rewrite伪静态规则自动转换 ...

  6. Fastadmin 等一些thinkphp5 larval的后台框架程序 bootstraptable 自定义js 实现动态列 的实现方法1 ,通过nginx apache rewrite 重定向

    Fastadmin 等一些thinkphp5 larval的后台框架程序 bootstraptable 自定义js 实现动态列 的实现方法1 ,通过nginx apache rewrite 重定向 需 ...

  7. nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面

    静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 带参数的 ...

  8. nginx多域名重定向到不同的二级域名

    需求是公司有多个二级域名,现在需要重定向到不同的二级域名上,最初的想法是用不同的if判定,后面太难维护,写出相关变量 listen 80; server_name jianye.68hn.cn yuz ...

  9. Nginx伪静态配置和常用Rewrite伪静态规则集锦

    伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面我来介绍nginx 伪静态配置方法 nginx里使用伪静态是直接在nginx.conf ...

最新文章

  1. 一块GPU如何模拟猴子大脑?
  2. javascript 判断字符串中是否包含某个字符串
  3. 计算机软件出版,[计算机软件及应用]出版信息管理系统.doc
  4. Cocos Creator中按钮组件数组的使用
  5. 判断手势_手势密码有几种?
  6. Caffe-SSD(single-shot-multibox)在Windows平台下的配置(CPU和GPU)与训练记录
  7. 探索Julia(part13)--多分派
  8. 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯
  9. 多米诺骨牌(洛谷-P1282)
  10. mysql删除新添加数据,MySQL添加、更新与删除数据
  11. Java并发编程:如何创建线程?
  12. php composer 框架,用 Composer 组建了个 PHP 框架
  13. from .import xxx什么意思
  14. Java基础(二):面向对象
  15. Windows11在Edge浏览器中打开IE浏览器兼容的页面,在Edge浏览器打开加载ActiveX控件的页面
  16. UVA 123 Searching Quickly
  17. python猜大小程序_「每日一练」巧用python实现猜大小的游戏
  18. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
  19. Windows Server 2008 R2 3389端口更改
  20. 华为称手机流畅度不由单一部件决定

热门文章

  1. 详解工业光魔动作捕捉神器iMoCap
  2. 私密计算机,360隐私安全计算机版
  3. CorelDRAW 9发生不可预期的错误解决方法
  4. ubuntu下连接远程打印机
  5. 【Pytorch基础教程35】引入非线性的激活函数
  6. Linux程序卡顿,记一次Linux系统卡顿的排查过程
  7. 如何批量查询百度seo域名
  8. AVL树(艾薇儿树)
  9. [ JS ] 如何把字符串类型的加减乘除转化成数学运算符?
  10. 拿下聆讯通关卡,微创医疗机器人IPO是“割韭菜”还是“大生意”?