为什么这个.htaccess正则表达式不起作用?

时间:2013-02-12 14:28:36

标签: php .htaccess mod-rewrite

我有一个正则表达式,如下所示

http://www.abc.com/signup.php?id=2

RewriteRule ^signup/([a-z]+)/([a-z]+)$ /signup.php?$1=$2 [L]

但这不起作用?任何人都可以帮助我。在.htaccess文件中有什么东西可以启用吗?

2 个答案:

答案 0 :(得分:2)

当您传递数字时,您也应该在正则表达式中匹配它们:

RewriteRule ^signup/([a-z0-9]+)/([a-z0-9]+)$ /signup.php?$1=$2 [L]

您可能还想包含其他字符,或者更确切地说使用元类,例如\w

答案 1 :(得分:0)

编辑后,试试这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} id=(\d+) 
RewriteRule ^signup\.php$ /signup/%1 [L,R=301]

RewriteRule ^signup/([0-9]+)$ /signup.php?id=$1 [L]

/signup.php?id=123重定向到/signup/123,然后将其重新写回/signup.php?id=123(但不会重定向)。