可能重复:
mod 重写和查询字符串
我知道在 URL 中传递参数的唯一方法是使用 PHP 中的 GET 方法。但我看到许多网站直接在 URL 中使用似乎是参数的内容,如下所示:
http://.../page/2/
在这种情况下,“页面”真的是一个参数吗?如果是这样,它是如何在代码中处理的?
或者这是位于目录“页面”中的目录“2”的常规 URL?这是否意味着每当创建新帖子时,网站都会创建所有页面和相应的目录?
谢谢
可能重复:
mod 重写和查询字符串
我知道在 URL 中传递参数的唯一方法是使用 PHP 中的 GET 方法。但我看到许多网站直接在 URL 中使用似乎是参数的内容,如下所示:
http://.../page/2/
在这种情况下,“页面”真的是一个参数吗?如果是这样,它是如何在代码中处理的?
或者这是位于目录“页面”中的目录“2”的常规 URL?这是否意味着每当创建新帖子时,网站都会创建所有页面和相应的目录?
谢谢
这称为 url 重写。基本上这意味着您使用 apache 模块将传入的 url 重写为新的 url,然后由 apache 处理
在您的示例http://www.test.com/page/2/
中可能被重写为类似http://www.test.com/?page=2
.
如果您在 Internet 上搜索 Apache URL rewrite,您将获得足够的结果来说明如何执行此操作。
这些都是约定俗成的。GET 参数并非特定于 PHP,这是所有浏览器对表单数据进行编码的方式。例如,基于 Java 的 webapps 使用分号分隔的参数。
您可以编写一个简单的层来转换?alpha=1&beta=2
,/alpha/1/beta/2
但它可能只是一个廉价的噱头(除了在极少数合法的情况下,如 Squid 缓存)。
今天的网站所做的是使用单一入口点模式。通常使用 apache mod_rewrite
,所有请求都由 Apache 处理,index.php
并且有一个路由工具可以为特定的 URL 方案选择适当的处理程序 PHP 文件。这些方案可以通过正则表达式轻松定义。
因此,总而言之,您可以决定 URL 的外观。这不是一件容易的事,有很多 SEO 蛇油推销员会让你做各种疯狂的事情。一个好的 URL 的作用是识别服务中的内容(文档),并且您必须在整个服务中使用该单个 URL 来解决它。
并且不要忘记:酷 URL 不会改变。您将在 2 年内放弃当前的代码库并从头开始重建您的网站。从逻辑的角度来看,以一种有意义的方式设计您的 URL 方案,而不是依赖于您的 Web 应用程序设计。
您给出的示例仍然是 GET 请求。
您正在寻找的是URL 重写。