LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1199|回复: 10

求一apache的rewrite 有点难度~~~

[复制链接]
发表于 2008-3-7 17:10:12 | 显示全部楼层 |阅读模式
实际URL为:
http://www.new.com/work/index.php?
action=list&para1=test&para2=test2

要转为:
http://work.new.com/list/para1/test/para2/test2

我的最终结果是要: 用户访问这个: http://work.new.com/list/para1/test/para2/test2

请教下要怎么写?
我不会PERL
谢谢了。
 楼主| 发表于 2008-3-7 17:34:53 | 显示全部楼层
自己先顶下。。。
等待高手解答。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 18:04:26 | 显示全部楼层
555555555555555555555
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 18:49:34 | 显示全部楼层
RewriteRule /work/$1/$2/$3 work.new.com/index.php?action=$1&$2=$3

这么写那个地方错了?
回复 支持 反对

使用道具 举报

发表于 2008-3-8 16:23:44 | 显示全部楼层
多找找网上有没有相同的例子吧,有就好办。
参考资料:
http://man.chinaunix.net/newsoft ... /rewrite_guide.html

这是我照上面的例子写的,没测试过,不知道对不对。

RewriteEngine on
RewriteLogLevel 9
RewriteLog "/tmp/rewrite.log"
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.new\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^([^.]+)\.new\.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)         /$1/index.php?action=$2&$3=$4&$5=$6

有问题,分析 /tmp/rewrite.log文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-8 22:09:21 | 显示全部楼层
Post by sofire;1824266
多找找网上有没有相同的例子吧,有就好办。
参考资料:
http://man.chinaunix.net/newsoft ... /rewrite_guide.html

这是我照上面的例子写的,没测试过,不知道对不对。

RewriteEngine on
RewriteLogLevel 9
RewriteLog "/tmp/rewrite.log"
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.new\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^([^.]+)\.new\.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)         /$1/index.php?action=$2&$3=$4&$5=$6

有问题,分析 /tmp/rewrite.log文件



非常感谢你的回复。手册我看了,它那是把域名重定向为目录。
而这是把目录重定向到域名。
不知道是不是我理解错了。

我测试了下你写的,没有通过。。。。。

很多人可以有都说不好测试。但是你可以在WEB目录下建一个/test 里面建个index.php
内容为:

<?php
echo '<pre>';
  var_dump($_REQUEST);
很多人可以有都说不好测试。但是你可以在WEB目录下建一个/test 里面建个index.php
内容为:

<?php
echo '<pre>';
  var_dump($_REQUEST);
?>
这样就可以了,再URL为:http://www.xxxx.com/test/index.p ... st2&test3=test4
如果访问http://test.xxx.com/list/test1/test2/test3/test4 能出现上面页面的内容就正确了。
?>
这样就可以了,再URL为:http://www.xxxx.com/test/index.p ... st2&test3=test4
如果访问http://test.xxx.com/list/test1/test2/test3/test4 能出现上面页面的内容就正确了。
回复 支持 反对

使用道具 举报

发表于 2008-3-9 16:42:27 | 显示全部楼层
把目录定向到域名做啥,为何要这么做?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-9 18:16:07 | 显示全部楼层
Post by sofire;1824561
把目录定向到域名做啥,为何要这么做?


因为需要嘛。
CU乔楚出一招
RewriteRule /work/([^/]+)/([^/]+)/([^/]+) http://work.new.com/index.php?action=$1&$2=$3 [L,R]

可是测试没通过。不知道为啥。帮忙看下。
回复 支持 反对

使用道具 举报

发表于 2008-3-10 00:36:02 | 显示全部楼层
很好找问题,分两步:

1.有没有跳转到 work.new.com这个域名?
看Rewrite的Log日志。
用Httpwatch等软件就能看到。

2.http://work.new.com/index.php?action=$1&$2=$3
访问这个正常不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-10 13:56:51 | 显示全部楼层
Post by sofire;1824709
很好找问题,分两步:

1.有没有跳转到 work.new.com这个域名?
看Rewrite的Log日志。
用Httpwatch等软件就能看到。

2.http://work.new.com/index.php?action=$1&$2=$3
访问这个正常不?



我写到虚拟主机里。
我错在那了?
<VirtualHost *:80>
ServerName work.new.com
DocumentRoot /usr/local/web/new/
DirectoryIndex index.php
RewriteEngine   on
#RewriteRule /work/([^/]+)/([^/]+)/([^/]+) /work/index.php?action=$1&$2=$3 [L,R]
#RewriteRule /work/(\w+)$ /work/index.php?action=$1&$2=$3 [L,R]
RewriteRule /work/(.?+)$ /work/index.php?action=$1&$2=$3 [L,R]
<Directory "/usr/local/web/new/">
  AllowOverride All
  Allow from All
</Directory>
</VirtualHost>

work 目录在/usr/local/web/new/低下。

测试没有通过。错在那了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表