我想使用.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
,然后执行重定向。