You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何通过GET传值并实现无GET变量的干净URL

实现干净URL传递用户参数的方案

当然可以实现这种干净URL,核心是通过服务器的URL重写规则,把www.example.net/xyz这类路径映射到原来的index.php?user=xyz,同时PHP端依然能正常获取到用户参数。

Apache服务器配置

  1. 确保Apache启用了mod_rewrite模块(大部分主机默认已开启)。
  2. 在网站根目录创建或编辑.htaccess文件,添加以下规则:
RewriteEngine On
# 排除真实存在的文件和目录,避免静态资源被重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将URL路径部分作为user参数传递给index.php
RewriteRule ^(.*)$ index.php?user=$1 [L]

Nginx服务器配置

在Nginx的站点配置文件中,添加重写规则:

location / {
    # 优先访问真实存在的文件/目录
    try_files $uri $uri/ @rewrite;
}

location @rewrite {
    rewrite ^/(.*)$ /index.php?user=$1 last;
}

PHP端参数获取

配置完成后,你可以两种方式获取用户参数:

  • 直接沿用原来的$_GET['user'],因为重写规则已经把路径值传递给了这个变量:
$username = $_GET['user'] ?? '';
  • 也可以直接解析请求路径(适合不想依赖重写规则传递参数的场景):
// 去除路径开头的斜杠,得到用户名部分
$username = trim($_SERVER['REQUEST_URI'], '/');

注意事项

  • 安全校验:获取到用户名后,必须做严格的过滤和校验,比如使用数据库预处理语句查询,防止SQL注入。
  • 路由冲突:如果网站有其他静态页面(如/about)或API接口,要确保重写规则不会误匹配这些路径,上述配置已经通过排除真实文件/目录避免了这个问题。

内容的提问来源于stack exchange,提问作者Lohith Diffie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:40:09