本人在研究关于apache重定向的资料,在网上找了很多,但是就本人来说,方便理解的,找到了这么一个,记录了下来,原帖地址:http://www.exehack.net/8.html

关于apache配置多域名,一般为两种方法。
1.虚拟主机及利用mod_rewrite对URL进行重定向或伪链~
2.虚拟主机配置方法,在httpd.conf文件最后简单添加,例如:<VirtualHost www.exehack.net>

DocumentRoot usr/local/www/exehack
ServerName www.exehack.net
#ErrorLog logs/minidx.com-error_log
#CustomLog logs/minidx.com-access_log common
</VirtualHost>

<VirtualHost www.baidu.com>
DocumentRoot usr/local/www/baidu
ServerName www.baidu.com
</VirtualHost>

这样在访问相关域名的时候便会跳转到对应的目录
虚拟主机的最大缺点是性能消耗较大,并且似乎和APACHE用来托管静态文件、连接及负载均衡后台所用的mod_jk有冲突。
所以个人不建议使用虚拟主机的方法去管理域名。
利用mod_rewrite对域名进行重定向或伪链:
首先需要开启mod_rewrite支持,在httpd.conf文件里搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

去掉#号,开启mod_rewrite。
继续搜索AllowOverride None更改为AllowOverride All,打开.htaccess的支持。
注意AllowOverride是可以针对每个目录进行设置的,这里应该将apache DocumentRoot根路径设置为AllowOverride All:

<Directory "/var/www/html">
AllowOverride All
</Directory>

之后建立.htaccess文件放在DocumentRoot下,通过编写.htaccess来管理相关域名
对域名进行301重定向,.htaccess中设置:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.test.net.cn [NC,OR]
RewriteCond %{HTTP_HOST} ^test.net.cn [NC]
RewriteRule ^(.*)$ http://www.test.com/test.html$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.exehack.net [NC,OR]
RewriteCond %{HTTP_HOST} ^exehack.net [NC]
RewriteRule ^(.*)$ https://www.exehack.net/test1.html$1 [R=301,L]

则访问www.test.net.cn或test.net.cn开头的域名会跳转到http://www.test.com/test.html
www.exehack.net或exehack.net开头的域名会跳转到https://www.exehack.net/test1.html
注意一些符号及参数:

^www.test.net.c表示以www.test.net.cn为开头,和所有语言一样,!代表否,即!^www.test.net.cn表示不以www.test.net.cn开头。
对mod_rewrite来说,!是个合法的模板前缀,表示“非”的意思,
这对描述“不满足某种匹配条件”的情况非常方便,或用作最后一条默认规则。
当使用!时,不能在模板中有分组的通配符,也不能做后向引用。
R 强制外部重定向,后面可以代301或302跳转。
L 表明当前规则是最后一条规则,停止分析以后规则的重写。(如果满足条件的话)
OR 或的意思,上例中既是www.test.net.cn或test.net.cn开头的域名。
NC 不区分大小写。
$N 引用RewriteRule模板中匹配的相关字串。
例如上例中的https://www.exehack.net/test.html$1,我个人测试的结果是:
访问http://www.exehack.net/132 会跳转到 http://www.exehack.net/test.html132
这是个很有用的参数,如果去掉$1则无论http://www.exehack.net开头的地址后面的链接是什么,最后都会转向: 
http://www.exehack.net/test.html
重定向的缺点是域名无法保留,这一点是不推荐的,所以最好的方法还是对域名进行伪链接设置,写法也很简单,既去掉R=301,重写到当前 
服务器的相关地址路径即可.

最后附加一些关于参数的信息

R[=code](force redirect) 强制外部重定向

F(force URL to be forbidden)禁用URL,返回403HTTP状态码。

G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。

P(force proxy) 强制使用代理转发。 )

L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。 
N(next round) 重新从第一条规则开始运行重写过程。 
C(chained with next rule) 与下一条规则关联 
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。

T=MIME-type(force MIME type) 强制MIME类型 
NS (used only if no internal sub-request) 只用于不是内部子请求

NC(no case) 不区分大小写 
QSA(query string append) 追加请求字符串

NE(no URI escaping of output) 不在输出转义特殊字符

例如:RewriteRule /foo/(.*) /bar?arg=P1/%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed +3a?` Z 
PT(pass through to next handler) 传递给下一个处理

例如: :5/Uh/ sX 
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理

S=num(skip next rule(s)) 跳过num条规则

E=VAR:VAL(set environment variable) 设置环境变量

关于apache 重定向设定的更多相关文章

  1. Apache重定向URL

    (1)去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号; (2 ...

  2. apache重定向无效

    这个问题让我纠结了蛮久啊,因为之前一直不注意SEO,网站带www和不带www的一级域名都被收录了,而且不知道为什么不带www的一级域名被收录比www还多,这可不是我的初衷!这次吸取教训了,以后再开站不 ...

  3. apache 重定向

    <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https:// ...

  4. htaccess apache重定向学习

    1.推荐博客:http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html 2.测试工具:https://htaccess.madewi ...

  5. Apache服务器的URL重定向

    前端时间要整个Apache重定向功能,在此记录一下. 一.安装Apache Windows版本官方下载安装文件httpd-2.2.21-win32-x86-openssl-0.9.8r,选择安装目录, ...

  6. Apache的初中级面试题

    --- 原文:[关于Apache的25个初中级面试题](http://www.oschina.net/translate/apache-interview-questions) Apache 求职面试 ...

  7. # 关于Apache的25个初中级面试题

    注:本文从自己的Markdown博客复制出,除标题字体加粗.代码风格改变.图片重新上传外其余均为markdown语法. 标签(空格分隔): LAMP --- 原文:[关于Apache的25个初中级面试 ...

  8. apache性能配置优化

    最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...

  9. 浅谈URL重定向

    转载:https://blog.csdn.net/kiyoometal/article/details/90698761 重定向原理 HTTP 协议的重定向响应的状态码为 3xx .浏览器在接收到重定 ...

随机推荐

  1. # Python第十节 传参

    Python第十节 传参 一. 变量和变量名 首先说明变量名和变量的一点差异 例如: var = [1, 2, 3] `var = "Google" 调用变量var的时候, 既可以 ...

  2. 【css对齐】块内或者行内图片与文字居中对齐最靠谱的方式!

    块内或者行内图片与文字居中对齐最靠谱的方式! 做图片与文字在一行的按钮时候最常用到,总结了一个靠谱的方法,终于可以完美的对齐下面给个代码 首先是html: <p class="btnU ...

  3. Java的安全性如何理解

    Java取消了强大但又危险的指针,而代之以引用.由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占 ...

  4. Tomcat 配置访问限制:访问白名单和访问黑名单

    最近公司的阿里云服务器上配置的 Tomcat 服务器运行 java的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testprox ...

  5. 深入理解MAGENTO – 第九章 – 数据集合瓦瑞恩

    本来,作为一个PHP程序员,如果你想攒一组变量的相关你有一个选择,古老的 阵列 . 尽管共享一个地址的名称与C存储器的阵列,一个PHP数组是一种通用的字典可变数组索引像数值对象结合行为的影响. 在其他 ...

  6. Shiro学习(6)Realm整合

    6.1 Realm [2.5 Realm]及[3.5 Authorizer]部分都已经详细介绍过Realm了,接下来再来看一下一般真实环境下的Realm如何实现. 1.定义实体及关系 即用户-角色之间 ...

  7. Android中让View匀速旋转

    项目需求,需要一个实现一个单帧的旋转动画,来提示当前进度,类似与圆圈型的progressbar. 首先定义anim文件: [html] view plaincopyprint? 1.     < ...

  8. JCF——set

    HashSet LinkedHashSet TreeSet 联系与区别

  9. Delphi 实现最近打开文件记录菜单

    unit UntOpenMenu; //download by http://wwww.NewXing.com interface uses Windows, Messages, SysUtils, ...

  10. IDHTTP

    Delphi IDHTTP用法详解 一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接 ...