自定义搜索
上一篇:圣诞节(Christmas)和节礼日(Boxing Day)大减价
下一篇:怎样让搜索引擎(google,baidu等)收录您的网站及提高网站排名;
如何利用Apache的Rewrite功能实现动态网址到静态网址的转换
斑竹 2009年12月23日 20:13:52

简单的说,如下就是动态网址:

http://www.bing.com/docs/submit.aspx?FORM=WSDD2&mkt=zh-CN

可改为静态:

http://www.bing.com/docs/submit-xx

http://www.bing.com/docs/submit-xx/

http://www.bing.com/docs/submit-xx.php  

这个网站服务器是支持动态网址到静态网址的转换,就是支持rewrite mode, 或者是支持.htaccess文件。把下面的文件保存到.htaccess文件,我是用记事本完成的。然后登录服务器,把它上传到根目录下。在IE地址栏输入www.coolder.com/travel-253,网页自动转到
www.coolder.com/layer_detail.php?uid=253.

RewriteEngine on
RewriteBase /
RewriteRule ^travel-253$ /layer_detail.php?uid=253 [NC]

我想在我自己的笔记本上的Apache上试动态网址到静态网址的转换,费了一些周折,现在,终于弄清这个Apache是支持rewrite的,而且下了个简单的试了一下,成功了。先小结一下,然后再学习复杂些的规则,最后把这个网站的动态网址转换成静态的。

步骤如下:
1,版本查看命令
D:\xampp\apache\bin>apache -v
Server version: Apache/2.2.11 (Win32)
Server built: Dec 10 2008 00:10:06

是2.2。x版,应该已经有rewrite模块。

2,打开D:\xampp\apache\conf目录下的httpd.conf文件,搜索下面的文字:
LoadModule rewrite_module modules/mod_rewrite.so

如果前面有#号,将#去掉,使它生效。

3,搜:AllowOverride none,将其改为AllowOverride All。文件里面有三个,不知道是不是需要都改,但,我把AllowOverride none都改为AllowOverride All了。

然后,在文件末尾加上下面的文字:


RewriteEngine On
RewriteLog  logs/rewrite.log
RewriteLogLevel 9
RewriteRule ^/travel$ /mia/index.php  [R,NC]

4,重启Apache:
D:\xampp\apache\bin>apache -k stop
D:\xampp\apache\bin>apache -k start

我可是用的 apache -k restart, 可是一直没变化,后来发现我登录的用户没有管理员权限,无法stop Apache,可是,用restart好像成功了似的,也不报错。我用管理员用户登录,先用stop停止,再用start启动,然后在IE输入localhost/travel地址,打回车,网页自动转接到localhost/mia/index.php。

如果不成功,可以到logs目录查看rewrite.log, 至少它能给你信心你的服务器支持rewrite,使你没写好。
我开始就怀疑我的Apache根本不支持rewrite,看看log文件,信心大增,终于试成功了个简单的。

接着试,待续。  


.htaccess
2楼 2009年12月24日 23:14:31 斑竹

从这个连接(http://www.phpv.net/html/1626.html 摘抄一段,如下:

RewriteRule规则表达式的说明:
    . 匹配任何单字符
    [chars] 匹配字符串:chars
    [^chars] 不匹配字符串:chars
    text1|text2 可选择的字符串:text1或text2
    ? 匹配0到1个字符
    * 匹配0到多个字符
    + 匹配1到多个字符
    ^ 字符串开始标志
    $ 字符串结束标志
    \n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)

RewriteRule适用的标志符
‘redirect|R [=code]’ (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写为禁止访问
‘proxy|P’ (force proxy)重写为通过代理访问的http路径
‘last|L’ (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
‘next|N’ (next round)循环同一个规则,直到不能满足匹配
‘chain|C’ (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal sub-request)如果是内部子请求则跳过
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)将重写结果运用于mod_alias
’skip|S=num’ (skip next rule(s))跳过下面几个规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量

例子:

用在主机上的:


RewriteEngine On
RewriteLog  logs/rewrite.log
RewriteLogLevel 9

RewriteRule ^/mia/to-canada$ /mia/layer.php?division=1&page=1  [NC,QSA,L]
RewriteRule ^/mia/to-canada-(.+)$ /mia/layer.php?division=1&page=$1  [NC,QSA,L]
RewriteRule ^/mia/(.+)-(.+)-(.+)$ /mia/layer_detail.php?tid=$1&page_no=$2&page=$3  [NC,QSA,L]

注:开始时换页不能用,老是第一页,后来加上QSA--附加上查询字符串,才好。

用在虚拟主机上的:

Options +FollowSymlinks

RewriteEngine on

RewriteBase /

RewriteRule ^to-canada$ layer.php?division=1&page=1  [NC,QSA,L]
RewriteRule ^to-canada-(.+)$ layer.php?division=1&page=$1  [NC,QSA,L]
RewriteRule ^(.+)-(.+)-(.+)$ layer_detail.php?tid=$1&page_no=$2&page=$3  [NC,QSA,L]

一点教训:

       应用这个url重写功能后,程序里面有些连接地址要写绝对地址,否则,它就是你输入的地址+相对地址,结果是找不到文件。require_once("")里用相对地址,不需要改。

推荐两个连接:

URL重写指南
http://www.7880.com/Manual/ApacheManual_GB/misc/rewriteguide.html

Apache模块 core
http://www.7880.com/Manual/ApacheManual_GB/mod/core.html#  

3楼 2009年12月25日 12:55:33 小兔网友
Apache 还有负责均衡的功能, 很强大的样子
第1页 共1页
相关链接
1. 网页自动跳转代码
2. 百万级访问量网站的技术准备工作(转)
3. Visa信用卡官方网站
4. SSL在网站链接的应用
5. 网页防复制(附代码)
6. Drupal 7: 网站的多语言转换中的Translate(翻译)标签
7. Google企业邮箱管理面板登录网址链接
8. 更改DNS后,无法用网址mail.domainname.com访问Google企业邮箱(已解决)
9. Drupal: 实现网站的多语言转换
10. 网上免费大学,有时间去学一门去(附链接)
11. 官方网站CanadaBenefits,可以搜加拿大的相关福利
12. Windows 7经常连不上网的解决方法
13. 找回消失的网站网页
14. 安省网上预约考驾照链接
15. 如何在网页嵌入flash,并无警告提示播放(附代码)
16. 网店日记(1):把俄罗斯市场放弃了