mod_rewrite重写规则为abc.php?a = 1& b = 2到abc / 2.html

时间:2013-03-20 13:14:32

标签: php .htaccess mod-rewrite url-rewriting

我是mod_rewrite或Regex的真正新手。 因此,我只需要你帮助解决以下问题。

我有一个看起来像的PHP页面:

stuff.php?id=1&text=2

我知道想要看起来像

stuff/2.html

你是否有人为htaccess设置了RewriteRule行,让它看起来像这样?

提前多多感谢!

2 个答案:

答案 0 :(得分:1)

此特定网页的重写规则:

RewriteRule ^stuff/2\.html$ stuff.php?id=1&text=2

如果2应该是动态的:

RewriteRule ^stuff/([0-9]+)\.html stuff.php?id=1&text=$1

一点解释:

  • ^$代表字符串的开头和结尾,因此我们不匹配longstuff/2.html.php
  • 点必须转义\.,否则它在RegEx(“任何字符”)中具有特殊含义
  • 第二种模式中的parantheses是“捕获组”,其内容将在重写时显示为$nn =捕获组数量,在本例中为{{1} })
  • 1是一个字符类,匹配类的一个字符,在本例中为数字
  • [0-9]表示“一个或多个”

答案 1 :(得分:0)

以下是将stuff/2.html重定向到stuff.php?id=1&text=2

的规则
RewriteRule ^stuff/([\d]+)\.html$ stuff.php?id=1&text=$1 [L]

注意[\d]+只接受数字,如果您想允许使用字母和插入符号,请使用以下规则:

RewriteRule ^stuff/([\w-]+)\.html$ stuff.php?id=1&text=$1 [L]