RewriteRule解释

时间:2012-09-28 18:38:39

标签: php .htaccess mod-rewrite localhost

有人可以解释以下两行吗?

RewriteEngine on
RewriteRule ^(.*)-(.*)-(.*)$   index.php?page=$1&id=$2&im=$3

我希望得到一个详细的解释,因为我对.htaccess文件一无所知。

任何人都可以帮助我吗?我很感激任何建议.. 谢谢..

2 个答案:

答案 0 :(得分:2)

规则是所谓的正则表达式,其中每个组都在括号中。点是一个随机字符,可以用星号修改0 ... n次。加号意味着1 ... n。如果没有添加修饰符,则只需要一个字符。

不确定Tim Cooper是否犯了错误,但我在这里回应原始的重写规则(^(.)-(.)-(.*)$):

该规则采用如下网址:http://example.com/a-b-def并将其重定向到:index.php?page = a& id = b& im = def

您还应该知道输入不正确的输入不匹配,因此网址http://example.com/aaa-bb-def不起作用。

答案 1 :(得分:1)

RewriteRule主要包含3个所以称之为部分:

  1. ^(.*)-(.*)-(.*)$ 这是您的网址将被重写的规则
  2. index.php?page=$1&id=$2&im=$3 是要重写的网址规则
  3. 在第二条规则之后,您可以添加一些重定向类型,例如[R=301] ,这意味着它是永久重定向
  4. 所以基本上你的规则会产生:
    http://domain.com/pagenumber-idnumber-imdefinition

    http://domain.com/index.php?page=pagenumber&id=idnumber&im=imdefinition

    我希望我很清楚...