米晓秋 發表於 2020-3-15 15:43:00

Apache 域名跳转配置

<h1 class="postTitle">Apache 域名跳转配置</h1>
<div class="clear">&nbsp;</div>
<div class="postBody">
<div id="cnblogs_post_body" class="blogpost-body ">
<p><strong>域名跳转</strong></p>
<div>  就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 。</div>
<div>&nbsp;</div>
<div><strong>参数格式</strong></div>
<div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">参数:

Apache mod_rewrite 规则重写

   </span><span style="color: rgba(128, 0, 128, 1)">1</span>) R[=<span style="color: rgba(0, 0, 0, 1)">code](force redirect) 强制外部重定向
               说明:强制在替代字符串加上http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。</span>

   <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。

   </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。

   </span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">) P(force proxy) 强制使用代理转发。

   </span><span style="color: rgba(128, 0, 128, 1)">5</span>) L(<span style="color: rgba(0, 0, 255, 1)">last</span><span style="color: rgba(0, 0, 0, 1)"> rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。

   </span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">) N(next round) 重新从第一条规则开始运行重写过程。

   </span><span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)">) C(chained with next rule) 与下一条规则关联

   </span><span style="color: rgba(128, 0, 128, 1)">8</span>) T=MIME-<span style="color: rgba(0, 0, 0, 1)">type(force MIME type) 强制MIME类型

   </span><span style="color: rgba(128, 0, 128, 1)">9</span>) NS (used only <span style="color: rgba(0, 0, 255, 1)">if</span> no internal sub-<span style="color: rgba(0, 0, 0, 1)">request) 只用于不是内部子请求

   </span><span style="color: rgba(128, 0, 128, 1)">10</span>) NC(no <span style="color: rgba(0, 0, 255, 1)">case</span><span style="color: rgba(0, 0, 0, 1)">) 不区分大小写

   </span><span style="color: rgba(128, 0, 128, 1)">11</span>) QSA(query <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)"> append) 追加请求字符串

   </span><span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">) NE(no URI escaping of output) 不在输出转义特殊字符
             说明:RewriteRule </span>/foo/(.*) /bar?arg=P1%3d$<span style="color: rgba(128, 0, 128, 1)">1</span> 将能正确的将/foo/zoo转换成/bar?arg=P1=<span style="color: rgba(0, 0, 0, 1)">zoo

   </span><span style="color: rgba(128, 0, 128, 1)">13</span><span style="color: rgba(0, 0, 0, 1)">) PT(pass through to next handler) 传递给下一个处理
             说明:RewriteRule </span>^/abc(.*) /def$<span style="color: rgba(128, 0, 128, 1)">1</span> # 将会交给/def规则处理Alias /def /<span style="color: rgba(0, 0, 0, 1)">ghi
      
   </span><span style="color: rgba(128, 0, 128, 1)">14</span>) S=<span style="color: rgba(0, 0, 0, 1)">num(skip next rule(s)) 跳过num条规则

   </span><span style="color: rgba(128, 0, 128, 1)">15</span>) E=<span style="color: rgba(0, 0, 0, 1)">VAR:VAL(set environment variable) 设置环境变量

   </span><span style="color: rgba(128, 0, 128, 1)">16</span><span style="color: rgba(0, 0, 0, 1)">) OR 代表或者

注:如果规则匹配则正常处理,</span><span style="color: rgba(128, 0, 128, 1)">8</span>)以后的标志无效,如果不匹配,那么下面所有关联的规则都跳过。</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">格式:

# 调用mod_rewrite.c模块
</span>&lt;IfModule mod_rewrite.c&gt;<span style="color: rgba(0, 0, 0, 1)">

    # 打开rewirte功能
    RewriteEngine on

    # 声明Client请求的主机中前缀不是www.client.cn
    RewriteCond </span>%(HTTP_HOST) ^<span style="color: rgba(0, 0, 0, 1)">www.client.com$

    # 含义是如果Client请求的主机中的前缀符合上述条件,则直接跳转。
    AuthType Basic </span>^(.*)$ http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.server.com/$1 </span>

&lt;/IfModule&gt;</pre>
</div>
<p><strong>实例配置</strong></p>
<div>1、查找是否有rewrite模块,域名跳转模块</div>
</div>
<div>&nbsp;</div>
<div>
<div class="cnblogs_code">
<pre>命令:apache2/bin/apachectl -M | <span style="color: rgba(0, 0, 255, 1)">grep</span><span style="color: rgba(0, 0, 0, 1)"> rewrit

rewrite_module    (shared)


如果不存在:
</span>&lt;br&gt;<span style="color: rgba(0, 0, 0, 1)">
# 编辑主配置文件,解注释
vim httpd.conf</span>&lt;br&gt;<span style="color: rgba(0, 0, 0, 1)">
LoadModule rewrite_module modules</span>/<span style="color: rgba(0, 0, 0, 1)">mod_rewrite.so

注:如果没有该模块,则需要通过apxs工具安装模块。</span></pre>
</div>
<p>2、修改虚拟主机配置文件</p>
</div>
<div>
<div class="cnblogs_code">
<pre>vim httpd-<span style="color: rgba(0, 0, 0, 1)">vhosts.conf

# 1对1域名跳转
</span>&lt;VirtualHost *:<span style="color: rgba(128, 0, 128, 1)">80</span>&gt;<span style="color: rgba(0, 0, 0, 1)">
    DocumentRoot </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/usr/local/html</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
    ServerName www.server.com
    ServerAlias www.aaa.com
</span>&lt;IfModule mod_rewrite.c&gt;<span style="color: rgba(0, 0, 0, 1)">
    RewriteEngine on
    RewriteCond </span>%{HTTP_HOST} ^<span style="color: rgba(0, 0, 0, 1)">www.aaa.com$
    RewriteRule </span>^/(.*)$ http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.server.com/$1 </span>
&lt;/IfModule&gt;
&lt;Directory /usr/local/html&gt;<span style="color: rgba(0, 0, 0, 1)">
    require all granted
</span>&lt;/Directory&gt;
&lt;/VirtualHost&gt;<span style="color: rgba(0, 0, 0, 1)">

# 1对多域名跳转
</span>&lt;VirtualHost *:<span style="color: rgba(128, 0, 128, 1)">80</span>&gt;<span style="color: rgba(0, 0, 0, 1)">
    DocumentRoot </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/usr/local/html</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
    ServerName www.server.com
    ServerAlias www.aaa.com
    ServerAlias www.bbb.com
</span>&lt;IfModule mod_rewrite.c&gt;<span style="color: rgba(0, 0, 0, 1)">
    RewriteEngine on
    RewriteCond </span>%{HTTP_HOST} ^<span style="color: rgba(0, 0, 0, 1)">www.aaa.com$
    RewriteCond </span>%{HTTP_HOST} ^<span style="color: rgba(0, 0, 0, 1)">www.bbb.com$
    RewriteRule </span>^/(.*)$ http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.server.com/$1 </span>
&lt;/IfModule&gt;
&lt;Directory /usr/local/html&gt;<span style="color: rgba(0, 0, 0, 1)">
    require all granted
</span>&lt;/Directory&gt;
&lt;/VirtualHost&gt;<span style="color: rgba(0, 0, 0, 1)">

配置文件</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">注:跳转状态码
    301代表永久重定向
    302临时重定向

注:$1代表地址后跟的网络文件。

注:访问一个“</span>/<span style="color: rgba(0, 0, 0, 1)">”可以输入以下格式。
 RewriteCond </span>%(HTTP_HOST)<span style="color: rgba(128, 0, 128, 1)">456</span><span style="color: rgba(0, 0, 0, 1)">.com
 RewriteRule </span>/(.*)$ HTTP:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">123.com/$1  </span></pre>
</div>
<p>3、重新读取配置文件</p>
</div>
<div>
<div class="cnblogs_code">
<pre>apache2/bin/apachectl graceful</pre>
</div>
<p>&nbsp;</p>
</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/liujunjun/p/12497934.html
頁: [1]
查看完整版本: Apache 域名跳转配置