注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 小五思科技术学习笔记之SSH
 帮助

rewrite 一例


2008-03-18 11:13:44
 标签:apache rewrite 正则   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liuyu.blog.51cto.com/183345/66445
    首先感谢帮助过我的朋友。前几天学习了 rewrite 写个心得吧。
 
URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程
 
    原题:
转换为:
new.com是在VM里建的,把本机HOSTS指到VM_IP 就好了 
 
我的测试脚本:index.php
<?php
echo '<pre>';
  var_dump($_REQUEST);
?>
 
由于没有经验,只能先从手册看起:http://www.itlearner.com/code/apache2.2/rewrite/rewrite_guide.html
看了一上午,了解了一些简单的基础知识。
 
并在CU里看了大量的例子,得到乔楚大哥的一例:
RewriteRule /work/([^/]+)/([^/]+)/([^/]+)
可惜测试没有通过。不知道是不是我测试方法不对。。
 
无奈,继续写。 在继续写之前,发现正则,与后面的 [L,R]   这都是啥意思??
 
继续查看得知:
文本
  .           任意一个单字符
  [chars]     字符类: "chars"中的任意一个字符
  [^chars]    字符类: 不在"chars"中的字符
  text1|text2 选择: text1 或 text2
量词
  ?           前面的字符出现 0 或 1 次
  *           前面的字符出现 0 或 N 次(N > 0)
  +           前面的字符出现 1 或 N 次(N > 1)
分组
  (text)      text 组
              (常用于设置一个选择的边界,或用于生成后引用: 
              在RewriteRule中可以用 $N 引用第N个分组)

  ^           锚定到行首
  $           锚定到行尾
转义
  \c          对给定的字符c进行转义
              (比如对".[]()"进行转义,等等)
 
C   (链接下一规则)
F   (强制禁止URL)
G   (强制废弃URL)
N   (从头再来)
L   (结尾规则)
NC  (忽略大小写)
P   (强制为代理)
PT  (移交给下一个处理器)
QSA (追加查询字符串)
R   (强制重定向)
 
知识是了解了,想了半天还是没有想到好的解决办法。
没办法,只能拆开了。分二步建虚拟主机+rewrite
 

<VirtualHost *>
ServerName work.new.com
DocumentRoot /usr/local/apache2/htdocs/new/work
DirectoryIndex index.php
<Directory "/usr/local/apache2/htdocs/new/work">
  AllowOverride All
  Allow from All
</Directory>
</VirtualHost>
 
想了半天,只能把URL 写死。
RewriteEngine on
RewriteRule ^/list/para/test /work/index.php?action=list&para=test [PT]
RewriteLog "/usr/local/apache2/logs/rewrite.log"
RewriteLogLevel 99
 
RewriteEngine on  ----开启rewrite 这一项一定要有,要不会报错。
RewriteLog    记录下日志,报什么错,可以查看日志得知。
测试能通过。访问正常。
 
可是URL 不是死的呀。人家可是找我要活的,给人家一死的,还不骂死我啊。
 
继续看吧,整整二天。我头都大了。请教了不少高手,只开花不结果~~~
 
破玩意还是写出来了!
RewriteRule ^/([^.]*)$ /index.php?action=%{REQUEST_URI} [QSA,L]
 
其实写成:
RewriteRule ^/([^.]*)$ /index.php
也可以。
 
其实就是正则的用法,记住每一个符号的用法,一个一个的测试。总会成功!
 
不管过程如何,结果是完成了任务,只是晚了点。
 
但我学得却茫然!
 
 

本文出自 “seven” 博客,请务必保留此出处http://liuyu.blog.51cto.com/183345/66445





    文章评论
 
2008-03-18 11:27:59
不错,不错.守住同学进步了

2008-03-18 13:01:19
好东西

2008-03-18 13:22:01
钻研精神值得学习!

2008-03-18 17:32:31
原来这几天不见人,是去钻apache rewrite.
守住,你还真不错。

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: