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