我正在尝试使用mod重写来使我的网址变短。有人告诉我可以用htaccess实现吗?
虽然我是php / mysql的新手,但我会尝试通过谷歌和我有限的知识解决自己的问题。但是我对htaccess一无所知,所以我正在寻求一些帮助。
我的用户个人资料位于
http://www.mysite.com/user/index/169
其中169
是用户id
。
如何将其更改为mysite.com/username?
我使用的脚本已经使用mod_rewrite创建目录
/ user / index不是物理文件夹。
任何人都可以帮忙吗?
答案 0 :(得分:0)
如果您的用户名和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脚本中的用户名值。
请注意,此模式允许用户名包含小写(a-z),大写(A-Z),数字(0-9),下划线和连字符。但是,自定义模式以仅允许允许出现在您网站上的用户名中的那些字符。
我不建议只使用www.mysite.com/username模式,因为这意味着您必须添加规则来检查请求是否不适用于实际文件,我认为使用该模式看起来更整洁/ user / username pattern。