根据下面的htaccess代码,我想将URL从site.com/user.php?id=user_id
更改为site.com/u/user_id
。但是,只有当用户名是字母数字时,此代码才有效。如果用户名包含任何下划线或点,我不知道该怎么办
RewriteRule ^u/(w+)/?$ user.php?id=$1
w+
有替代品吗?
使用。要匹配任何字符,或使用[]定义允许的字符列表
元字符w
匹配任何字母、数字或下划线。
如果您还想匹配其他字符,则应该使用其他字符。
元字符.
与任何字符匹配,因此这将是一个选项:RewriteRule ^u/(.+)/?$ user.php?id=$1
或者,您可以在[]
之间定义一组允许的字符。要允许使用字母数字字符、下划线和点,可以使用RewriteRule ^u/([a-z0-9_.]+)/?$ user.php?id=$1
。注意,在这种情况下,.
必须被替换,否则它将被解释为上面提到的元字符,并与任何字符匹配。
您还可以匹配除/
之外的任何字符,这在匹配URL:RewriteRule ^u/([^/]+)/?$ user.php?id=$1
时特别有用。[]
中的前导^
使字符组匹配除了列出的字符之外的任何字符,因此在本例中,匹配除了/
之外的所有字符。