2011-03-24 122 views
1

这是我的htaccess的一部分:简单htaccess的重定向

RewriteRule ^post/(.*)$ post.php?name=$1 
RewriteRule ^(.*)/$ cat.php?name=$1 

的URI不会停这样的:

www.domain.com/category-name/ 
www.domain.com/post/hello-world 

正如你看到的,在第一个地址(类别)的尽头有是'/',第二个没有'/',我怎么能在第二个地址上做呢?如果我会做这样的事情:

RewriteRule ^post/(.*)/$ post.php?name=$1 

它不会工作,因为服务器'认为'我的意思是类别地址。希望你明白谢谢你。

回答

3

在每个规则上使用[L]修饰符,以便在规则匹配时停止处理更多规则。在这种情况下,你甚至可以使尾部斜线可选!

RewriteRule ^post/(.*)$ post.php?name=$1 [L] 
RewriteRule ^(.*)/?$ cat.php?name=$1 [L] 
0

尝试使用的(.*?)代替(.*)

没有问号,它是“贪婪的”,因为它会匹配直到最后匹配的所有东西。使用问号,它只会匹配直线上的第一个匹配项。

0

让斜线可选(两次):

RewriteRule ^post/(.*?)/?$ post.php?name=$1 [L] 
RewriteRule ^(.*?)/?$ cat.php?name=$1 [L]