.htaccess实现支持任意参数的MVC站点Pretty URL美化配置方法
通用URL重写实现方案
Apache 服务器配置
在站点根目录(即示例中的mywebsite目录)下新建.htaccess文件,写入如下规则:
RewriteEngine On # 跳过真实存在的文件、目录的重写逻辑 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将所有路径片段统一传入index.php的path参数 RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
规则说明:QSA标记会保留原有query string,不会覆盖额外传入的参数。
Nginx 服务器配置
在站点对应的server配置块中添加如下规则:
location /你的站点根路径/ { # 跳过真实存在的文件、目录的重写逻辑 if (!-e $request_filename) { rewrite ^/你的站点根路径/(.*)$ /你的站点根路径/index.php?path=$1 last; } }
无需适配本地/线上环境差异,仅需修改你的站点根路径为对应环境的站点路径前缀即可,核心重写逻辑完全通用。
后端参数解析逻辑
重写规则只会将所有路径片段统一传递给入口文件,你可以在index.php中自行拆分得到所有参数,完全不受参数数量、参数内容限制:
<?php // 获取路径参数 $rawPath = trim($_GET['path'] ?? '', '/'); // 拆分得到所有参数的有序数组 $params = explode('/', $rawPath); // 示例:访问 /value1/value2/value3 时,$params[0] = 'value1',$params[1] = 'value2',$params[2] = 'value3' // 可根据MVC需求自行分配参数对应的控制器、方法、业务参数 print_r($params); ?>
内容的提问来源于stack exchange,提问作者Brice Joosten
相关产品推荐
相关产品推荐

