热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache的URL重写规则的参数说明

在apache中要实现url参数我们必须了解一些基本的参数了,像r,f,g,p,l等等我们都需要知道它们的作用,这样才能更好的使用URL重写规则来做我们想做的事情。

在apache中要实现url参数我们必须了解一些基本的参数了,像r,f,g,p,l等等我们都需要知道它们的作用,这样才能更好的使用URL重写规则来做我们想做的事情。

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=zed

13) PT(pass through to next handler) 传递给下一个处理,例如:

  1. RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理 
  2. Alias /def /ghi  

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

15) E=VAR:VAL(set environment variable) 设置环境变量,例:
 
  1. RewriteEngine on 
  2. RewriteCond %{HTTP_HOST} ^otc-team [NC] 
  3. RewriteRule ^(.*)  http://otcteam.phpfensi.com/$1 [L] 

一些有用的实际rewrite例子

例1.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.phpfensi.com和173.192.169.119都跳转到主机前缀为http://www.phpfensi.com,避免相同内容的网页有多个指向的域名,如http://phpfensi.com,代码如下:
 
  1. NameVirtualHost 173.192.169.119:80 
  2. ServerAdmin smile665(AT)gmail.com 
  3. DocumentRoot "/web" 
  4. ServerName phpfensi.com 
RewriteEngine on #打开rewirte功能

RewriteCond %{HTTP_HOST} !^www.phpfensi.com [NC] #声明Client请求的主机中前缀不是www.phpfensi.com,其中 [NC] 的意思是忽略大小写

RewriteCond %{HTTP_HOST} !^173.192.169.119 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写

RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空

RewriteRule ^(.*) http://www.phpfensi.com/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.phpfensi.com/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中的任意字符,()括号的功能是把所有的字符做一个标记,以便于后面用$1这样的变量来引用,就是引用前面里的(.*)字符。


推荐阅读
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
author-avatar
小小寒沙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有