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 ...
随机推荐
- Python程序员去上海工作有多难?
我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...
- 在昆明网络SEO的走向站外的优化该何去何从?
昨天大概讲了SEO的站内优化,今天我们来讲讲网站站外的优化. 站外主要以第三平台为主,其中包含站外推广:常规推广.外链建设:利用第三方平台优化关键词排名: 1.博客平台,现在有好多博客平台是很不错的, ...
- 洛谷 P3384 【模板】树链剖分
树链剖分 将一棵树的每个节点到它所有子节点中子树和(所包含的点的个数)最大的那个子节点的这条边标记为"重边". 将其他的边标记为"轻边". 若果一个非根节点的子 ...
- TweenMax动画库学习
之前在做HTML5移动端开发的时候,用的都是Animate.css,这个插件封装的的确很好,但是在做一些缓动方面的动画,它也有一定的不足之处,比如手要写一个连续的动画,需要不停的去重复写函数,使得代码 ...
- MySQL 2006 超时
http://ronaldbradford.com/blog/sqlstatehy000-general-error-2006-mysql-server-has-gone-away-2013-01-0 ...
- eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法
当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...
- python学习笔记 list
1.list中的任一元素可以是任一类型.可以是混合的,如,前两个字符串后面的是数字.都是可以的. 2.可以用-1表示最后一个元素. 3.注意不要越界. 4.len(mates) 用来计算list的大小 ...
- 安卓自定义控件(五)触控基础MotionEvent
之前去面试,人家说,我这个事件拦截机制写得太少了,还有一个MotionEvent没写,这个确实也很重要,后来我考虑了一下,决定将这篇文章放到自己定义控件里. 先简单再提一下事件分发,事件分发和拦截主要 ...
- Java开发步骤
3.编辑Java源程序 使用纯文本编辑器,比如记事本notpad.exe:EditPlus.UltraEdit等专业的纯文本编辑器. Word不是纯文本编辑器. 需求:写一个Java程序,在控制台打印 ...
- JavaScript OOP(三):prototype原型对象(即构造函数的prototype属性)
通过构造函数生成的实例化对象,无法共享属性或方法(即每个实例化对象上都有构造函数中的属性和方法):造成了一定的资源浪费 function Obj(name,age){ this.name=name; ...