我正在使用htaccess将profile.php?u=<username>
更改为mywebsite / username,当我在链接中使用它时,它可以正常工作但我希望当有人写profile.php?id=<uid>
例如在Facebook上写“www.facebook.com/profile.php?id=4”时,它改为“www.facebook.com/zuck”
我的htaccess代码
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1
我可以添加什么?请帮忙。
答案 0 :(得分:1)
没什么,因为你肯定没有Apache可用的列表,其中包含用户ID到各自用户名的映射。 Facebook通过查询其数据库中的ID来执行重定向,并将您重定向到包含从其数据库中检索到的用户名的相应新URL。这样的PHP脚本可能如下所示:
<?php
$options = array("options" => array("min_range" => 1));
if (($id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT, $options)) {
$user = new User($id);
header("Location http://example.com/{$user->name}", true, 303);
exit();
}