【问题标题】:Need some answer about example.php/example需要一些关于 example.php/example 的答案
【发布时间】:2012-12-05 02:08:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: php url post get slash


    【解决方案1】:

    一个可能的解释是开发者使用.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

    这不是那么漂亮,也不那么容易链接回这个特定页面。

    【讨论】:

    • 如果使用漂亮的方式。获取数据的方法是否与不漂亮的方法相同,例如$_GET['year'],或者在我们使用$_GET['year']之前需要声明其他内容。
    • 是的,是一样的。 .htaccess 只是使用 MOD_REWRITE 规则以不同方式显示 URL。服务器仍然接收到相同的信息,只是服务器处理 URL 的方式不同。
    【解决方案2】:

    Mr.Xenotype 很好地回答了您的问题,但遗漏了一小部分。

    Does it have something to do with POST method?
    

    不,它处理 GET 方法。正如他所说,让 URL 看起来“漂亮”非常重要,如果网站是这样设计的,它实际上可能是 RESTful API(对初学者来说有点高级)的关键部分。

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

    是一样的

    http://www.fruit.com/example.php?id=red

    需要对 .htaccess 文件进行一些修改才能使用所谓的正则表达式或 REGEX 来完成此操作。如果您想了解更多信息,我很乐意提供一些示例。

    在 .htaccess 文件(服务器配置文件)中添加“RewriteRule”可以让服务器改变服务器文件/文件夹的访问方式

    //probably what the rewrite looks like of the example you provided
    RewriteRule .* example.php/$0 [L]
    

    RewriteRules 分为 4 个块:action、pattern、rewrite 和 flag

    Action:RewriteRule,本质上只是让服务器知道我们将要执行重写

    模式:.* 是本例中的模式。这 ”。”代表任何字符,意思是匹配任何字符,“*”告诉它重复这个。因此,匹配重写后的任何字符。

    重写是执行此操作的页面,因此 example.php 是重写。这个“$”告诉它从哪里开始重写。因此,我们将从“$”符号开始重写,并使用我们的模式。我们的模式“.*”告诉我们匹配任何字符,在本例中为红色。

    [L] 表示最后一条规则。就是这样,没有更多的规则可循。您可以对多个页面使用多个重写规则。

    所以现在,服务器不再使用 example.php?id=red,而是知道在“example.php/”之后开始匹配我们提供的任何字符。

    【讨论】:

    • 是的,如果您同意,我想了解更多。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多