我正在进一步开发我的登录系统,看起来更专业,我想知道如何将请求变成简单的链接,使它们看起来更光滑?
例如,对于我的某个系统,用户可以通过转到http://www.example.com/user?user=JimmyJones
来搜索某人的个人资料这一切都很好,但是我觉得它看起来不是很好,很多其他网站因为我不知道的某种技巧而在链接中没有这个,因为你可以看到我已经得到了最后使用一些非常简单的htaccess来删除.php。
但是我怎样才能将上面的链接更改为:
http://www.example.com/user/JimmyJones
非常感谢您花时间阅读本文,我真的希望有人可以帮助我解决我的小问题,我认为在.htaccess中有一些方法可以做到这一点吗?
编辑:
以下是一些关于我希望如何做的网站:
imgur.com/user/example
facebook.com/exampleuser
答案 0 :(得分:0)
在.htaccess中假设启用了重写模块的Apache Web服务器,如下所示:
RewriteEngine On
RewriteRule ^user/([a-zA-Z]+)$ user.php?user=$1 [L]
第一行说使用重写引擎。
第二个,匹配一个url开始(或者更确切地说是相对于.htaccess包含文件夹),模式'user'后跟斜杠并匹配任何字母字符的模式,直到字符串结尾(不是包括其他查询参数)。
L旗基本上表示已完成工作。
如果.htaccess在公共根目录中:
//example.com/user/JimmieJones
将映射到:
//example.com/user.php?user=JimmieJones
然而它不匹配:
//example.com/user
//example.com/user/
//example.com/user/JimmieJones/
//example.com/user/Freddy_K9
请注意您的应用中的所有现有链接:
<a href="/user?user=JimmieJones">Visit Jimmie's Profile</a>
可能需要更新。使用上面的示例模式,旧样式URL(以前已编入索引/已添加书签)可能会在没有现有规则的情况下失败。您可能需要调整模式或为旧样式设置重定向。
管理大量重定向和重写可能会让人头疼。我建议你注意你的url名字间距。并记录下来。
我为别名/快捷方式/广告系列保留了第一级模式。
//example.com/slug
如果可能,我会为您的用户个人资料网址避免这种情况。
理想情况下,您希望确保一致性,并且对URL(使用相关的http方法)和资源(规范网址)进行一对一的对应。
答案 1 :(得分:0)
您在根词典中创建.htaccess
文件,然后使用
RewriteEngine on
然后写下您的规则,对于您的示例,它就像这样
RewriteRule ^/?user/([^/]+)/?$ user?user=$1 [L,QSA]
所以整页就像这样
RewriteEngine on
RewriteRule ^/?user/([^/]+)/?$ user.php?user=$1
仅为您的例子。