我正在做一个项目,我偶然发现了一些代码。我曾试图谷歌但找不到正确的关键字来搜索这个问题。
http://www.fruit.com/example.php/red
我对此感到困惑,.php
的结尾仍然有一个字符/red
。
这样做的目的是什么?它与POST
方法有关吗?
答案 0 :(得分:3)
可能的解释是开发人员正在使用.htaccess
重写规则。它很可能是与页面有关的额外数据(例如你提到的,POST和GET),它只是通过这种方式使URL看起来更漂亮或简化了URL。
有时也会这样做,以便更容易链接到此页面,尤其是在基于数据生成页面的情况下。
这样做的一个受欢迎的地方是博客。您经常看到博客将链接显示为:
http://blog.com/blog/2001/02/23/how-pretty-is-this
实际上,对服务器的请求类似于:
/blog.php?year=2001&month=02&day=23&title=how-pretty-is-this
这不是那么漂亮,也不容易链接回这个特定页面。
答案 1 :(得分:1)
Mr.Xenotype很好地回答了你的问题,但错过了一小部分。
Does it have something to do with POST method?
不,它处理GET方法。正如他所说的那样,让网页看起来“非常漂亮”,它实际上可能是RESTful API的重要组成部分(对于初学者来说是先进的),如果这就是网站的设计方式。
http://www.fruit.com/example.php/red
与
相同http://www.fruit.com/example.php?id=red
使用所谓的正则表达式或REGEX来完成此操作需要对.htaccess文件进行一些修改。如果你想了解更多,我很乐意提供一些例子。
在.htaccess文件(服务器配置文件)中添加“RewriteRule”可以允许服务器更改服务器文件/文件夹的访问方式
//probably what the rewrite looks like of the example you provided
RewriteRule .* example.php/$0 [L]
RewriteRules分为4个块:action,pattern,rewrite和flag
动作:RewriteRule,基本上只是让服务器知道我们将要执行重写
模式:。*是本例中的模式。 “。”代表任何字符,意思是匹配任何字符,“*”表示重复此字符。因此,在重写后匹配任何字符。
重写是执行此操作的页面,因此example.php是重写。这个“$”告诉它从哪里开始重写。因此,我们将在“$”符号处开始重写,并使用我们的模式。我们的模式“。*”告诉我们匹配任何字符,在本例中为红色。
[L]表示最后一条规则。就是这样,没有更多的规则要遵循。您可以为多个页面使用多个重写规则。
现在,服务器现在知道在“example.php /”之后开始匹配我们提供的任何字符,而不是使用example.php?id = red。