需要一些关于example.php / example的答案

时间:2012-12-05 02:08:07

标签: php url post get slash

我正在做一个项目,我偶然发现了一些代码。我曾试图谷歌但找不到正确的关键字来搜索这个问题。

http://www.fruit.com/example.php/red

我对此感到困惑,.php的结尾仍然有一个字符/red。 这样做的目的是什么?它与POST方法有关吗?

2 个答案:

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