GET请求不需要?最后

时间:2017-09-14 20:00:47

标签: php .htaccess mod-rewrite get request

我正在进一步开发我的登录系统,看起来更专业,我想知道如何将请求变成简单的链接,使它们看起来更光滑?

例如,对于我的某个系统,用户可以通过转到http://www.example.com/user?user=JimmyJones

来搜索某人的个人资料

这一切都很好,但是我觉得它看起来不是很好,很多其他网站因为我不知道的某种技巧而在链接中没有这个,因为你可以看到我已经得到了最后使用一些非常简单的htaccess来删除.php。

但是我怎样才能将上面的链接更改为:

http://www.example.com/user/JimmyJones

非常感谢您花时间阅读本文,我真的希望有人可以帮助我解决我的小问题,我认为在.htaccess中有一些方法可以做到这一点吗?

编辑:

以下是一些关于我希望如何做的网站:

imgur.com/user/example

facebook.com/exampleuser

2 个答案:

答案 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

仅为您的例子。