instagram.com如何传递“instagram.com/username”之类的用户名变量
instagram.com/floydmayweather
不使用该$_GET
功能,结果看起来不像这样
instagram/index.php?username=floydmayweather
instagram.com如何传递“instagram.com/username”之类的用户名变量
instagram.com/floydmayweather
不使用该$_GET
功能,结果看起来不像这样
instagram/index.php?username=floydmayweather
在您的 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 并检查其组件 :)
重写引擎将是一个完美的解决方案,例如:
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