.htaccess:URL重写问题

时间:2010-07-12 17:47:53

标签: .htaccess url-rewriting

我是新来的网址重写并遇到一个我无法弄清楚的问题。

我有这两个条件:

RewriteRule ([^/]+).php index.php?com=cat&catname=$1 [L]
RewriteRule ([^/]+)/([^/]+).php index.php?com=detail&catname=$1prodname=$2 [L]

需要2个这样的网址:

website.com/category-name.php
website.com/category-name/product-name.php

似乎第一个条件规则在第二个......我的意思是:如果我调用第一个url一切正常,但是当我调用第二个url时我无法获得我想要的变量(“com”是总是“cat”和“catname”得到2美元的价值

提前致谢!

1 个答案:

答案 0 :(得分:3)

与第二条规则匹配的网址也会与第一条规则匹配。由于第一条规则标记为“L”,因此永远不会应用第二条规则。

也许您应匹配绝对网址 - 使用^/开始正则表达式以匹配网址的开头,并以$结束以匹配网址的结尾。请记住,重写规则应用于URL路径(在website.com之后的所有内容,包括斜杠)。

例如(当然没有对此进行测试):

# Example: website.com/books.php -> website.com/index.php?com=cat&catname=books
RewriteRule ^/([^/]+).php$ /index.php?com=cat&catname=$1 [L]
# Example: website.com/books/java.php -> website.com/index.php?com=detail&catname=books&prodname=java
RewriteRule ^/([^/]+)/([^/]+).php$ /index.php?com=detail&catname=$1prodname=$2 [L]