重写规则接受下划线和点



根据下面的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时特别有用。[]中的前导^使字符组匹配除了列出的字符之外的任何字符,因此在本例中,匹配除了/之外的所有字符。

最新更新