2017-09-14 59 views
-1

我正在开发我的登录系统,看起来更专业一些,我想知道如何将请求转化为简单的链接,让它们看起来更加时尚?GET请求不需要?最后

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

这就是所有罚款和花花公子,但我不认为它看起来非常好,其他很多网站没有这个搜索某人的个人资料别人的在他们的链接,由于某种我不知道的伎俩,因为你可以看到我已经摆脱了.php在最后使用一些非常简单的htaccess完成。

但我怎么能更改链接上时:

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

非常感谢您抽出宝贵的时间来阅读这一点,我真的希望有人能帮助我与我的小问题,我承担有一些方法可以在.htaccess中做到这一点?

编辑:

这里有一些网站,这样做只是我想如何做到这一点:

imgur.com/user/example

facebook.com/exampleuser

+2

您正在寻找** url rewriting **。它通常通过apache模块'mod_rewrite'执行。 https://httpd.apache.org/docs/current/en/mod/mod_rewrite.html – Calimero

+0

@Calimero我该怎么做这个先生,我会非常感激,如果你能给我一些指导,我会写什么做这个? – BigHoss

+1

或者你可以使用路由器和前端控制器模式。 – Progrock

回答

0

在.htaccess中假设启用了重写模块的Apache Web服务器,如下所示:

RewriteEngine On 
RewriteRule ^user/([a-zA-Z]+)$ user.php?user=$1 [L] 

第一行说使用重写引擎。

第二种说法是匹配一个以模式'user'开始(或者相对于.htaccess包含文件夹)的url,后跟一个斜杠并匹配任何字母字符的模式,直到字符串的结尾(不包括附加的查询参数)。

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> 

可能需要更新。并且在上面的示例模式中,旧样式网址(以前索引/书签)在没有您现有规则的情况下可能会失败。您可能需要调整模式或为旧样式设置重定向。

管理大量的重定向和重写可能会令人头疼。我建议一些注意你的网址名称间距。并记录下来。

我保留别名/快捷方式/广告系列的第一层模式。

//example.com/slug 

我会尽可能避免为您的用户个人资料网址。

理想情况下,您希望实现一致性,并为URL(与关联的http方法)和资源(规范URL)建立一对一的对应关系。

+0

你能解释一下这位先生吗? [L]意味着什么和$ 1? – BigHoss

+0

该手册比我做得更好。他们被称为旗帜。 https://httpd.apache.org/docs/2.4/rewrite/flags.html – Progrock

0

你让.htaccess文件根字典然后用

RewriteEngine on 

启动它,然后写你的规则,对于您的示例它会是这样

RewriteRule ^/?user/([^/]+)/?$ user?user=$1 [L,QSA] 

这样一个完整的页面会像这

RewriteEngine on 
RewriteRule ^/?user/([^/]+)/?$ user.php?user=$1 

只是为你的例子。

+0

@Progrock没有,只是一个例子。 – AXAI

+0

@Progrock这实际上是我唯一确定的事情,可选的斜杠。 – AXAI