如果您的用户名和 id 值存储在 MySQL 数据库中,那么 Apache 将无法将用户名转换为数字 id。(您可以使用 RewriteMap 来进行这种转换,但它会变得混乱和脆弱。)
相反,您可以让 Apache 将用户名转发到 PHP 脚本,然后让该 PHP 脚本为该用户名提供内容。(因为 PHP 可以查询 MySQL 数据库。)
一旦您编写了一个基于用户名提供用户配置文件的 PHP 脚本(例如称为 show_profile.php),您可以使用 Apache 在顶级公共的 .htaccess 文件中调用此脚本目录:
RewriteRule ^user/([a-zA-Z0-9_-]+)$ show_profile.php?username=$1
这将发送一个请求,www.mysite.com/user/ExampleUser_1981
以便/show_profile.php?username=ExampleUser_1981
您可以使用$_GET['username']
预定义的请求变量在 PHP 脚本中读取用户名的值。
请注意,此模式允许用户名包含小写 (az)、大写 (AZ)、数字 (0-9)、下划线和连字符。但是自定义模式以仅允许那些允许出现在您网站上的用户名中的字符。
我不建议简单地使用 www.mysite.com/username 模式,因为这意味着您必须添加规则来检查请求不是针对实际文件的,而且我认为使用 /user/username 模式看起来更整洁.