- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
初级URL重写指南 - Apache 2.2 中文版参考手册
初级URL重写指南 - Apache 2.2 中文版参考手册
注意:根据你的服务器配置,有可能必须对这里的例子作些小修改,比如,在额外启用 mod_alias 和 mod_userdir 的情况下要增加 [PT] 标志,或者为了适应目录级( .htaccess )的配置而将针对服务器级的规则集进行重写。对一个特定的规则集应该先透彻理解然后再考虑应用,这样才能避免出现问题。
规范化URL
描述:
在有些web服务器上,一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用。无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL。
解决方案:
对所有不规范的URL执行一个外部HTTP重定向,以改变它在浏览器地址栏中的显示及其后继请求。下例中的规则集用规范的 /u/user 替换 /~user ,并修正了 /u/user 所遗漏的后缀斜杠。
RewriteRule ^/ ~ ([^/]+)/?(.*) / u /$1/$2 [ R ]RewriteRule ^/u/( [^/]+ )$ /$1/$2 / [ R ]
规范化主机名
描述:
这个规则的目的是强制使用特定的主机名以代替其他名字。比如,你想强制使用 代替 ,就可以在以下方案的基础上进行修改:
解决方案:
对运行在非80端口的站点
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]RewriteCond %{HTTP_HOST} !^$RewriteCond %{SERVER_PORT}!^80$RewriteRule ^/(.*) :%{SERVER_PORT}/$1 [L,R]
对运行在80端口的站点
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]RewriteCond %{HTTP_HOST} !^$RewriteRule ^/(.*) /$1[L,R]
移动过的 DocumentRoot
描述:
通常,web服务器的 DocumentRoot 直接对应于URL / ,但是它常常不是处于最高的一级。比如,你希望访问者在进入网站时首先进入 /about/ 目录。可以使用下面给出的规则集。
解决方案:
只需将 / 重定向到 /about/ 即可:
RewriteEngine onRewriteRule ^/$ /about/ [ R ]
也可以使用 RedirectMatch 指令解决问题:
RedirectMatch ^/$ /e/www/
结尾斜杠问题
描述:
每个网管对引用目录的结尾斜杠问题都有一本苦经,如果遗漏了,服务器会产生一个错误,因为如果请求是/~quux/foo而不是/~quux/foo/,服务器就会去找一个叫foo的文件,而它是一个目录,所以就报错了。通常,可以使用这个 FAQ entry 里面提到的方法解决问题。但是有时候需要使用重写规则来解决问题,比如,在应用了许多复杂的重写规则之后。
解决方案:
解决这个微妙问题的方案是让服务器自动添加后缀斜杠。为了达到目的,必须使用一个外部重定向,以使浏览器能够正确地处理后继的请求(比如对图片的请求)。如果仅仅执行一个内部重写,可能仅仅对目录页面有效,而对含有相对URL的图片的页面无效,因为浏览器有请求内嵌目标的可能。比如,如果不用外部重定向,对 /~quux/foo/index.html 页面中的 image.gif 的请求将变成对 /~quux/image.gif 的请求!所以,应该这样写:
RewriteEngine onRewriteBase /~quux/RewriteRule ^foo $ foo / [ R ]
又懒又疯狂的做法是把这些写入其宿主目录中的顶级 .htaccess 中:
RewriteEngine onRewriteBase /~quux/RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+ [^/] )$ $1 / [R]
但是这样一来会增加处理上的开销。
将用户主目录移动到不同web服务器
描述:
通常,许多网管在建立一个新的web服务器时,都会有这样的要求:重定向一个web服务器上的所有用户主目录到另一个web服务器。
解决方案:
很简单,在老的web服务器上重定向所有的 /~user/anypath 到 http://newserver/~user/anypath
文档评论(0)