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

Ubuntu20.04 Apache环境下基于页面名称的URL重写实现咨询

实现方案

1. 开启Apache重写模块与配置权限

  • 执行命令启用rewrite模块:sudo a2enmod rewrite
  • 编辑Apache站点配置文件(默认路径为/etc/apache2/sites-available/000-default.conf,若使用自定义站点配置则修改对应文件),在站点对应的<Directory>配置块中修改权限允许重写规则覆盖:
return (<Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>
)
  • 重启Apache生效配置:sudo systemctl restart apache2

2. 根目录添加.htaccess重写规则

在站点根目录(和入口index.php同级目录)新建.htaccess文件,写入以下规则:

RewriteEngine On

# 排除管理员目录、真实存在的文件/目录,不执行重写
RewriteCond %{REQUEST_URI} !^/manager/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将路径重写为page参数传递给PHP
RewriteRule ^(.*)$ /?page=$1 [L,QSA]

规则说明:QSA参数会保留原URL附带的其他GET参数,不影响原有功能;L表示匹配到本条规则后停止匹配后续规则。


3. PHP代码适配修改

仅需要调整生成跳转URL的方法格式即可,修改getReferrerUrl方法的返回值格式:

public static function getReferrerUrl() {
    $page = self::getParam(Login::$_referrer);
    return !empty($page) ? "/{$page}" : null;
}   

额外检查项目中所有硬编码的跳转逻辑、页面内链接,把所有/?page=xxx格式的链接全部替换为/xxx格式,包括登录成功后的重定向地址,也要从/?page=home改为/home。

验证方法

完成配置后访问以下地址测试功能是否正常:

  • 普通用户首页https://app.bitlabtech.com/home正常加载
  • 发邮件页https://app.bitlabtech.com/sendEmail正常加载
  • 管理员后台https://app.bitlabtech.com/manager/可正常访问
  • 原有带其他GET参数的请求功能不受影响

内容的提问来源于stack exchange,提问作者Alo Asbei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:18:05