用户ID使用htaccess自动更改为用户名?

时间:2015-01-10 10:02:14

标签: php .htaccess mod-rewrite

我正在使用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

我可以添加什么?请帮忙。

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();
}