0

instagram.com如何传递“instagram.com/username”之类的用户名变量

instagram.com/floydmayweather

不使用该$_GET功能,结果看起来不像这样

instagram/index.php?username=floydmayweather

4

2 回答 2

0

在您的 HTTP 服务器中使用 URL 重写命令。Apache 和 nginx 都有很多例子。

重写规则在到达您的代码之前发生在服务器级别。这意味着在您的代码接收 URL 之前,实际上不必修改 URL。

我这样做的方式是配置 Apache/nginx 以将所有与现有文件不匹配的 URL(以便图像、js 和 css 等静态文件仍然有效)发送到我的 index.php 文件。然后在 index.php 文件中,我解析 URL 以确定要加载的页面类型和数据。

在您的示例中,他们将从 URL 中获取最后一个标记,知道这将是 URL 格式的用户名,在数据库中查找该用户并相应地构建页面。

这就是前端控制器或 URL 路由器之类的东西在大多数框架中发挥作用的地方。在 index.php 中,我将基于其组件将每个 URL 映射到一个类,然后该类将处理实际的页面构建。

这是有关重写模块的更多信息;

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

http://wiki.nginx.org/HttpRewriteModule

一些快速的谷歌搜索将向您展示如何配置它的许多示例。

您的 index.php 文件可以检查$_SERVER数组以确定已请求的 URL。在这种情况下,该explode()函数是您的朋友,用于解析 URL 并检查其组件 :)

于 2013-08-16T23:00:03.793 回答
0

重写引擎将是一个完美的解决方案,例如:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

重写引擎- 重写引擎是位于 Web 应用程序框架中的软件,该框架运行在 Web 服务器上,可修改 Web URL 的外观。这种修改称为 URL 重写。重写的 URL(有时称为短的、花哨的 URL、搜索引擎友好的 - SEF URL 或 slug)用于提供更短且看起来更相关的网页链接。该技术在用于生成网页的文件和呈现给外界的 URL 之间添加了一层抽象。

用法

而是使用扩展链接(.php / html 等)获取 URL

www.stackoverflow.com/index.php

您将获得没有扩展名的 URL

www.stackoverflow.com/index

于 2013-08-16T23:09:59.513 回答