Php 为附加整数的配置文件用户名写入.htaccess

Php 为附加整数的配置文件用户名写入.htaccess,php,.htaccess,mysqli,Php,.htaccess,Mysqli,大家好,我有一个名为profile.php的页面,用于在用户配置文件之间进行交换。通过注册创建用户后,将根据其名称创建用户名并用于访问页面。例如,ricky_lake、tom_brown等。我正在为此使用以下.htaccess文件 RewriteEngine On RewriteRule ^([a-zA-Z0_9-]+)$ profile.php?profile_username=$1 RewriteRule ^([a-zA-Z0_9-]+)/$ profile.php?profile_user

大家好,我有一个名为
profile.php
的页面,用于在用户配置文件之间进行交换。通过注册创建用户后,将根据其名称创建用户名并用于访问页面。例如,ricky_lake、tom_brown等。我正在为此使用以下
.htaccess
文件

RewriteEngine On
RewriteRule ^([a-zA-Z0_9-]+)$ profile.php?profile_username=$1
RewriteRule ^([a-zA-Z0_9-]+)/$ profile.php?profile_username=$1
除了配置文件名包含数字外,这一切都可以正常工作。在某些情况下有必要追加,这样数据库中就不会有重复项。我在
register.php
中添加了如下数字:

//Generate username by concatenating first name and last name
$username = strtolower($fname . "_" . $lname);
$check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username = '$username'");

$i = 0;
//if username exists add number to username
while (mysqli_num_rows($check_username_query) != 0) {
    $i++; //Add 1 to i
    $username = $username . "_" . $i;
    $check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username = '$username'"); 
}
如果有人再次注册成为汤姆·布朗,这将返回汤姆·布朗1号或下一个汤姆·布朗2号。等等


问题是,唯一出现的是汤姆·布朗。当我添加整数时,它抛出一个
错误404
。配置文件本身在数据库中,正如预期的那样,其他一切似乎都很好(能够登录、发表文章等),但无法打开配置文件页面。我认为这与
.htaccess
有关,但从上面看,我无法发现问题所在。已经在这里呆了一段时间了……救命啊!:)

这应该有效;我还将这两条规则合并为一条,使用?在正则表达式和斜杠之后,它使其成为可选的。我还编辑了正则表达式

RewriteEngine On
RewriteRule ^([a-zA-Z-_0-9]+)/?$ profile.php?profile_username=$1
您还可以使用进行简单的测试;

正则表达式中的“0_9”应该是“0-9”,因为它只接受0和9作为整数。我像这样重新编写了
[a-zA-Z-_0-9]+
,它工作正常,谢谢。很好。现在它是双向的,但罪魁祸首是
[a-zA-Z-_0-9]+