您好我有一个名为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
除非配置文件名称包含数字,否则这一切都正常。在某些情况下,有必要附加,因此我们不会在dB中有重复项。我在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'");
}
如果有人再次注册Tom Brown,则会返回tom_brown_1或下一个tom_brown_2。等。
问题是,唯一出现的是tom_brown。当我添加整数时,它会抛出Error 404
。配置文件本身在预期的dB中,其他所有内容似乎都很好(能够登录,发帖等),但无法打开配置文件页面。我认为这与.htaccess
有关,但从上面我无法发现问题。现在已经有一段时间......帮忙! :)
答案 0 :(得分:1)
这应该有用;我还将两个规则合二为一,用?在正则表达式和斜杠之后它使它成为可选的。我还编辑了正则表达式。
RewriteEngine On
RewriteRule ^([a-zA-Z-_0-9]+)/?$ profile.php?profile_username=$1
你也可以做简单的测试; https://htaccess.madewithlove.be/