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

OVH服务器Apache下.htaccess URL重写后$_GET丢失404问题求助

问题解决步骤

你当前仅配置了旧URL到美化URL的单向跳转规则,缺少美化URL到实际PHP脚本的内部重写规则,所以访问美化地址时Apache找不到对应资源返回404,也无法将ID传递给$_GET参数。

前置检查

  • 确认rewrite模块已启用:执行sudo a2enmod rewrite,返回启用成功即可
  • 确认站点配置允许.htaccess生效:编辑/etc/apache2/sites-available/000-default.conf(对应你的站点配置文件),在<Directory /var/www/html>段落中将AllowOverride None改为AllowOverride All,执行sudo systemctl restart apache2重启服务生效

完整.htaccess配置

RewriteEngine On

# 规则1:旧带参URL 301跳转到美化URL,避免旧链接失效
RewriteCond %{REQUEST_URI} ^/productPage\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^(.*)$ /productPage%1? [R=301,L]

# 规则2:美化URL内部重写到实际PHP脚本,地址栏不变,参数正常传入
RewriteRule ^productPage([0-9]+)$ /productPage.php?id=$1 [L]

注意事项

  • 调试阶段可以先把R=301改成R=302,防止301永久跳转被浏览器缓存,导致规则更新后不生效,确认所有功能正常后再改回301
  • 原有PHP代码不需要做任何修改,$_GET['id']可以正常读取到ID值,所有依赖该参数的CRUD逻辑不受影响
  • 如果需要适配多个类似的页面(比如详情页、列表页),可以仿照规则2新增对应的重写规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:45:03