使用.htaccess转换用户ID';s到用户名


Use .htaccess to convert user ID's to usernames?

我想使用.htaccess将链接到配置文件页面的URL从ID号转换为名称。例如,在Facebook上,如果你要去:

https://facebook.com/profile.php?id=4

它会带你进入马克·扎克伯格的个人资料页面。然而,您也可以简单地转到:

https://facebook.com/zuck

这对用户更友好并且更容易记住。如何使用htaccess将id号转换为用户名?我需要将其发送到php脚本来处理并发回名称吗?

您不能专门使用.htaccess,因为您需要从数据库中获取该ID的用户名,但您可以使用PHP来执行此操作。在您的.htaccess文件中:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([^/]+)$ /profile.php?user=$1 [L]

然后,您可以在profile.php:中检查类似的内容

if(isset($_GET['user'])){
    if(is_numeric($_GET['user'])){ //Check if the input is all numeric
        //Grab the username from database
        //Redirect user to site.com/user/$username
    }
}

有关PHP的is_numeric()函数的更多信息:http://php.net/manual/en/function.is-numeric.php

您可能还需要检查用户的用户名是否完全是数字,以避免不断重定向用户。不过,如果你确保用户的用户名不全是数字,你就可以了。

您不能,因为.htaccess不能访问存储层,您必须使用PHP脚本将ID转换为username,然后执行重定向。