当前位置:首页 > Apache

Apache URLRewriter

canca15年前 (2011-07-23)Apache532

今日折腾网站,不得不用到了Apache 的Rewrite功能,虽说我对正则表达式并不陌生,但这东西学完就忘,忘了再学一样吃力,并且正则表达式只是学习Rewrite的一个方面。半天下来心急火燎,最终事没有办成,最后还是静下心来琢磨,总算蒙混了过去,这里做个备忘,希望对后来的人有所帮助。

URL Rewrite:翻译过来就是网址重写。用了网址重写功能的网站实际有两套网址,一套是表面上的,给访问者和搜索引擎用的,是假的,因为实际上并不存在;还有一套是真实的网址,是真正的幕后工作者,但只有网站管理者才知道。URL Rewrite的作用就是将假网址映射到真网址,换句话说就是欺骗网友,开个玩笑。
那网址重写这有什么用呢?每个使用者的目的都不一样,我也不多说了。
下面举个例子:
比如下面这个手机号码查询网,你输入网址 http://www.abc.biz/13888888888,看上去13888888888是个目录,实际上不是,虽然理论上可以每个手机号创建一个目录,但实际上有很多问题,这里是采用了网址重写功能,实际的真正工作的网址可能是 http://www.abc.biz/mobile.php?no=13888888888,那么当用户访问前者的时候,Apache如何将前者映射成后者呢,就是利用网址重写功能。

至于如何在Apache中启用URL Rewrite功能呢,这里我不罗嗦了,网上有文章有的是,下面我写几个例子,一例胜千言!

例一:
RewriteRule   1\.htm$      2.htm
用途:将1.htm文件映射成2.htm,当用户请求当前目录下的1.htm文件的时候,Apache实际上读取2.htm的内容,返回给用户,但浏览器地址栏里仍然是1.htm,用户并不知道他看到是2.htm文件的内容。这个例子基本上是个白痴例,但能说明一个问题,就是RewriteRule指令中假网址和真网址的位置,最开始接触RewriteRule的时候,我就搞混过两者的位置。

例二:
RewriteRule (.+)\.htm$ $1.php
用途:将xxx.htm文件映射成xxx.php,反之的写法如下:
RewriteRule (.+)\.php$ $1.htm
上面的两个例子只是通过映射文件后缀名来迷惑别人。

例三:
RewriteRule ^([0-9]+).\htm$ index.php?id=$1
用途:将 xxx.htm 映射成 index.php?id=xxx,其中xxx为纯数字。

例四:
RewriteCond %{http_host} ^shoujihao.biz [NC]
RewriteRule ^(.*)$ http://www.abc.biz/$1 [L,R=301]
用途:将不带www的网址(shoujihao.biz)请求跳转到带www的网址(www.abc.biz)请求。

例五:
RewriteRule ^index.htm$ / [L,R=301]
用途:将对index.htm(比如:http://www.shoujihao.biz/index.htm)的网址请求,跳转到网站默认页面(比如:http://www.shoujihao.biz)

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/223.html

标签: Apache
分享给朋友:

“Apache URLRewriter” 的相关文章

AppServ 2.5.9 中集成的 各个软件的版本

AppServ是PHP网页架站工具组合包,泰国的作者将一些网路上免费的架站资源重新包装成单一的安装程序,以方便初学者快速完成架站,AppServ 所包含的软件有:Apache、Apache Monitor、PHP、MySQL、PHP-Nuke、phpMyAdmin。 AppServ 2.5.9 Ap…

授权Apache2 + PHP读写目录权限

摘要:您需要将目录的所有者设置为PHP使用的用户(Web服务器用户)。步骤1:确定PHP用户…

Apache下htaccess文件不起作用/rewrite 没有效果

【Apache下rewrite不成功】不成功按照如下三步排查:【第一步:打开rewrite 模块没有】首先 我们找到apache安装目录下的 /conf/http.cnf打开,文件 搜索rewrite 找到#LoadModule rewrite_module modules/mod_rewrite.…

APACHE如何里一个站点绑定多个域名?用ServerAlias servername

APACHE2如何里一个站点绑定多个域名?用ServerAlias以前很笨,要使多个域名指向同一站点总是这样写:<VirtualHost *:80> ServerAdmin i@kuigg.com DocumentRoot /www/kuigg.com…

Tomcat启动报错或警告: org.apache.catalina.webresources.Cache.getResource Unable to add the resource

关于缓存空间不足倒置无法添加资源的解决办法!相信很多朋友都遇到过了吧。报错信息如下:**为任意位置org.apache.catalina.webresources.Cache.getResource Unable to add the resourc…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。