这个问题可能是重复的。但我没有找到任何解决方案为我工作。我想重写网址,其中我有一个和两个级别的参数。第一个参数是p
和第二个是sp
www.domain.com/home
应该指向www.domain.com/index.php?p=home
,而www.domain.com/projects/99
应该指向www.domain.com/index.php?p=projects&sp=99
我如何在.htaccess中执行操作?
目前我htaccess如下:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1
RewriteRule ^([^/]*)/([^/]*)\$ index.php?p=$1&sp=$2 [L]
这个htaccess的问题是它正确地指向了一级url,即www.domain.com/home,但不是两级url,即www.domain.com/projects/99
1条答案
按热度按时间ttvkxqim1#
您必须分别处理这些规则。规则前面的所有条件仅适用于一个紧接着的规则。您试图“链接”两个规则。第二个规则永远不可能匹配,因为第一个规则是一个改变了语法的捕获所有请求的规则,除此之外,您必须确保第一个规则不会捕获不需要的请求。同时考虑在模式中使用
*
还是+
操作符。我建议使用+
操作符,这样当为'page'或'subpage'请求空值时,就会有一个明确的错误消息。因此,这可能更接近您正在寻找的内容: