.htaccess 对短URL使用Mod#u rewrite';s

.htaccess 对短URL使用Mod#u rewrite';s,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试使用mod rewrite使我的url变短。有人告诉我可以通过htaccess实现吗 虽然我是php/mysql的新手,但我会尝试通过谷歌和我有限的知识来解决我自己的问题。但是我对htaccess一无所知,所以我正在寻求他人的帮助 我的用户配置文件位于 其中169是用户id 如何将其更改为mysite.com/username 我使用的脚本已经使用mod_rewrite来创建目录 /用户/索引不是物理文件夹 有人能帮忙吗?如果您的用户名和id值存储在MySQL数据库中,那么Apach

我正在尝试使用mod rewrite使我的url变短。有人告诉我可以通过htaccess实现吗

虽然我是php/mysql的新手,但我会尝试通过谷歌和我有限的知识来解决我自己的问题。但是我对htaccess一无所知,所以我正在寻求他人的帮助

我的用户配置文件位于

其中
169
是用户
id

如何将其更改为mysite.com/username

我使用的脚本已经使用mod_rewrite来创建目录

/用户/索引不是物理文件夹


有人能帮忙吗?

如果您的用户名和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
这将向
/show\u profile.php?username=ExampleUser\u 1981
发送对
www.mysite.com/user/ExampleUser\u 1981
的请求,以便您可以使用
$\u GET['username']
预定义的请求变量读取php脚本中的用户名值

请注意,此模式允许用户名包括小写(a-z)、大写(a-z)、数字(0-9)、下划线和连字符。但是定制模式,只允许那些允许出现在您站点用户名中的字符

我不建议简单地使用www.mysite.com/username模式,因为这意味着您必须添加规则来检查请求是否针对实际文件,而且我认为使用/user/username模式看起来更整洁