简单的htaccess重定向

时间:2011-03-24 07:26:37

标签: php .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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

如果没有问号,那就是“贪婪”,因为它会匹配到线上最后一场比赛的所有内容。使用问号,它只会匹配该行的第一个匹配。

答案 2 :(得分:0)

使斜线可选(两次):

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