我是新来的网址重写并遇到一个我无法弄清楚的问题。
我有这两个条件:
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美元的价值
提前致谢!
答案 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]