httpd路径映射和重定向
apache httpd系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
主要包括Alias指令、AliasMatch、Redirect、RedirectMatch、ScriptAlias和ScriptAliasMatch。它们由mod_alias模块提供,该模块用于提供简单的路径映射和重定向需求,更复杂的内容见URL重写。
其中ScriptAlias用法和Alias完全一样,唯一不同的是ScriptAlias映射的目标路径被认为是CGI文件或包含CGI文件的目录,它们将会被cgi处理器处理执行。
1.1 处理顺序
Redirect、RedirectMatch指令优先于Alias、AliasMatch进行处理;同类型的Redirect或Alias按照出现顺序进行匹配,匹配到了立即停止。
例如:如果几个指令按照下面的顺序出现:
Redirect1
Alias1
AliasMatch2
Alias3
RedirectMatch2
Redirect3
那么它们匹配的顺序为:Redirect1>RedirectMatch2>Redirect3>Alias1>AliasMatch2>Alias3。且一被匹配立即生效,后面的将被忽略。
1.2 Alias和AliasMatch
Alias指令用于将URL路径映射到本地文件系统的路径,且本地路径不受DocumentRoot的限制。AliasMatch是正则版本的Alias。
Alias "/image" "/ftp/pub/image"
这将使得 http://myserver/image/foo.gif 的请求得到/ftp/pub/image/foo.gif,由于是精确匹配的,所以 http://myserver/image/foo.gif 不会返回该路径下的文件。但Alias有支持正则匹配的指令AliasMatch。
AliasMatch "(?i)^/image(.*)" "/ftp/pub/image$1"
Alias中如果URL部分包含了尾随斜线,则映射路径也应该包含斜线。例如下面的例子,这时如果请求 http://myserver/icons ,将不会得到/usr/local/apache/icons/$DirectoryIndex。
Alias "/icons/" "/usr/local/apache/icons/"
设置了Alias后,需要考虑映射到的本地路径的权限是否放行。特别是对于DocumentRoot外的路径,通常会因为< Directory "/">的拒绝而导致这些映射目标不能访问。所以,对于这样的映射路径应该还需要为Alias指令配一个< Directory >容器放行。例如:
Alias "/image" "/ftp/pub/image"
<Directory "/ftp/pub/image">
Require all granted
</Directory>
如果Alias或AliasMatch出现在< Location >容器中,则它们只需要一个映射路径作为参数即可,因为URL已经包含在容器路径中。例如:
<Location "/image">
Alias "/ftp/pub/image"
</Location>
1.3 Redirect和RedirectMatch指令
它们告知客户端资源已经转移,让它们重新发送对新路径资源的HTTP请求。
Redirect [status] old-URL new-URL
旧的URL必须是以斜线"/"开头的绝对路径,新URL也必须是绝对路径,但可以是包含了scheme://serverhost的绝对路径,也可以是使用斜线开头的绝对路径。例如:
# 重定向到不同主机上
Redirect "/service" "http://foo2.example.com/service"
# 重定向到相同主机上
Redirect "/one" "/two"
如果客户端请求 http://example.com/service/foo.txt ,将被告知重新去请求 http://foo2.example.com/service/foo.txt 。可以是包含GET参数的URL,例如 http://example.com/service/foo.pl?q=23&a=42 ,将重定向到 http://foo2.example.com/service/foo.pl?q=23&a=42 。但注意,POST方法会被无视。
如果没有指定status参数,则重定向是临时重定向(HTTP status 302)。对客户端来说,此资源的路径变动是临时性的。以下几个status参数可以返回各自不同的HTTP状态码:
- permanent:返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
- temp:返回一个临时性重定向状态码(302),这是默认值。
- seeother:返回一个"参见"状态码(303),表示此资源已经被替代。
- gone:返回一个"已废弃"状态码(410),表示此资源已经被永久性地删除了。如果指定了这个状态码,则new-URL参数将被忽略。
status可以被指定为某个数值以返回其他指定状态码。如果此值在300-399之间,则必须提供new-URL参数,否则必须忽略new-URL,但不管如何,值必须是有效的http状态码值。
和alias指令一样,如果写在Location容器中,则old-URL忽略,因为它已经包含在location容器的路径中。例如:
<Location "/one">
Redirect permanent "http://example.com/two"
</Location>
<Location "/three">
Redirect 303 "http://example.com/other"
</Location>
<LocationMatch "/error/(?<NUMBER>[0-9]+)">
Redirect permanent "http://example.com/errors/%{env:MATCH_NUMBER}.html"
</LocationMatch>
httpd路径映射和重定向的更多相关文章
- Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext
Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用.Servlet的配置信息包 ...
- ASP.NET MVC 4 (一)路径映射
原文:ASP.NET MVC 4 (一)路径映射 正如ASP.NET MVC名字所揭示的一样,是以模型-视图-控制设计模式构建在ASP.NET基础之上的WEB应用程序,我们需要创建相应的程序类来协调处 ...
- Spring—请求映射之URL路径映射
Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类.并且提供了一组强大的注解:需要通过处理器映射DefaultAnnotati ...
- Servlet路径映射
Serlvlet路径映射 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url. 容器默认请求的是一个Servlet,所以不会直接根据 ...
- springMVC学习总结(二)路径映射和请求方法限定
springMVC学习总结(二)路径映射和请求方法限定 一.路径映射 无参数的访问路径 对springmvc项目的访问路径,是由根路径和子路径组成:在注解式开发中,根路径标注在类名之上,子路径标注在方 ...
- iis访问网络路径映射问题(UNC share)
最近在做一个功能,涉及到nas网络磁盘文件的保存和访问,在服务器上将对应的路径映射为Z盘,结果在iis上部署网站直接访问该路径,报无法找到该路径的错误. 用的是.net core开发,在vs直接启动程 ...
- servlet路径映射中的完全路径匹配、目录匹配、扩展名匹配
在servlet路径映射中,关于url-pattern的配置有三种,分别是完全路径匹配.目录匹配.扩展名匹配 其优先级分别为:完全路径匹配>目录匹配>扩展名匹配: 一.三种路径印射的区别 ...
- NodeJS框架express的路径映射(路由)功能及控制
我 们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route control章节,route实现了客户端请求的URL的路径映 ...
- 001_JavaWeb之Servlet的路径映射问题
001_JavaWeb之Servlet的路径映射问题 在web.xml中写入: <servlet> <servlet-name>DeleteStudent</servle ...
随机推荐
- CSS和文档
1. 块级元素: p,div,ul,ol,h1,h2 . . . h6等.块级元素独占一行,旁边不能有其他元素. 2. 行内元素:span,a,strong,em等. display属性可以使块级元素 ...
- 《 iPhone X ARKit Face Tracking 》
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文来自于腾讯Bugly公众号(weixinBugly), 作者:jennysluo,未经作者同意,请勿转载,原文地址:http://mp.w ...
- intel服务器cpu命名规则
我们以E3.E5.E7系列进行一个详细解析.首先,Intel E3.E5.E7代表了3个不同档次的至强CPU,至强"E系列"的这种命名方式有些类似桌面上的Core i3,i5,i7 ...
- Python 日志处理(三) 日志状态码分析、浏览器分析
在企业中,从日志中提取数据进行分析,可以帮助企业更加了解用户行为,用户最感兴趣的产品或者内容,分析得到数据后,可以决定企业在今后的走向. 从这些日志数据中,比较重要的有: 1. 用户访问最多的url, ...
- Iptables详解七层过滤
<Iptables详解七层过滤> 一.防火墙简介 防火墙其实就是一个加固主机或网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险区域的访问.当然需 ...
- 正确释放Vector的内存
http://blog.jobbole.com/37700/ 今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link). 博主采用 Vector存储一些数据,但是发现在执行 c ...
- 邻里街坊 golang入坑系列
如果要追新或者怀旧,就点击https://andy-zhangtao.gitbooks.io/golang/content/ . 博客园里面的文章基本和gitbook上面是保持同步的. 这几天看了几集 ...
- (ajax)——jquery用法
例子:/* ajax获得状态 */ 点击事件 $("#findBycname").click(function(){ var company = ...
- redis配置文件之复制
主从复制使用slaveof将Redis实例作为另一个Redis服务器的副本. 1) Redis复制是异步的,master可以配置成如果它连接的slave没有达到给定的数量,就停止接受写入.2) 如果断 ...
- 晓莲说-何不原创:java 实现二维数组冒泡排序
新手从业路-为自己回顾知识的同时,也希望和大家分享经验: 话不多说,上代码 public class 冒泡排序 { /** * @param admin * @2017.12.4 ...