+ -
当前位置:首页 → 问答吧 → .htaccess问题...

.htaccess问题...

时间:2007-09-25

来源:互联网

我现在已经实现:http://www.test.com/abc转向http://www.test.com/index.php?m=abc,重写规则是重要写的:
RewriteRule ^(.*?)$  index.php?m=$1 [QSA,L]
但我现在要实现http://www.test.com/abc/1转向http://www.test.com/index.php?m=abc&id=1时的重写规则怎么写啊?

RewriteRule ^(.*?)/(.*?)$  index.php?m=$1&id=$2 [QSA,L] 这样写错了...

作者: PConline   发布时间: 2007-09-24

有谁知道为什么吗?谢谢啊

作者: PConline   发布时间: 2007-09-25

我把整个.htaccess的文件内容贴出来吧。。。

Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)$  index.php?m=$1 [QSA,L]
#RewriteRule ^(.*?)/([0-9]+)$  index.php?m=$1&rid=$2 [QSA,L]

我现在怀疑是因为 RewriteBase / 这个的问题导致的,他可能在转向的时候并没有转向
我网站的根目录,只是在我请求的url中最后那个“/”所在的目录,如果是这样那我的
改那个地方,那么那个地方又要怎么改呢?

作者: PConline   发布时间: 2007-09-27

楼主你的.htaccess写得很正确。。。
只是有一点你忽略了,RewriteRule是从上往下依次执行的,而且你每一条都有L
abc/123这样的url也会匹配第一条RewriteRule是不是?[L]之后第二条自然不会执行了。

试试这个
引用:
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/([0-9]+)$  index.php?m=$1&rid=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)$  index.php?m=$1 [QSA,L]

作者: charlee   发布时间: 2007-10-10

谢谢。。。这样是可以的。。。呵呵

作者: PConline   发布时间: 2007-10-11