Regex 重写规则接受下划线和点
在下面的htaccess代码中,我想将URL从Regex 重写规则接受下划线和点,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,在下面的htaccess代码中,我想将URL从site.com/user.php?id=user\u id更改为site.com/u/user\u id。但是,只有当用户名是字母数字时,此代码才有效。如果用户名包含下划线或点,我不知道该怎么办 RewriteRule ^u/(\w+)/?$ user.php?id=$1 \w+是否有替代品?使用。匹配任何字符,或使用[]定义允许的字符列表 元字符\w匹配任何字母、数字或下划线 如果您还想匹配其他字符,那么应该使用其他字符 元字符匹配任何字符,因
site.com/user.php?id=user\u id
更改为site.com/u/user\u id
。但是,只有当用户名是字母数字时,此代码才有效。如果用户名包含下划线或点,我不知道该怎么办
RewriteRule ^u/(\w+)/?$ user.php?id=$1
\w+
是否有替代品?使用。匹配任何字符,或使用[]定义允许的字符列表
元字符\w
匹配任何字母、数字或下划线
如果您还想匹配其他字符,那么应该使用其他字符
元字符
匹配任何字符,因此这将是一个选项:重写规则^u/(.+)/?$user.php?id=$1
或者,您可以在[]
之间定义一组允许的字符。要允许字母数字字符、下划线和点,可以使用重写规则^u/([a-z0-9\.]+)/?$user.php?id=$1
。请注意,在本例中必须替换
,否则它将被解释为上面提到的元字符并匹配任何字符
您还可以匹配除
/
之外的任何字符,这在匹配URL时特别有用:重写规则^u/([^/]+)/?$user.php?id=$1
。[]
中的前导^
使字符组匹配除所列字符以外的任何字符,因此在本例中,除/
以外的任何字符都匹配,谢谢。你的回答帮了大忙+1:)