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

PHP网站URL重定向问题求助:旧动态URL转友好URL失败

解决动态URL到静态URL的重定向问题

问题根源

你写的RewriteRule无法匹配目标URL,因为RewriteRule默认仅匹配URL的路径部分(?之前的内容),?后面的查询字符串必须通过RewriteCond结合%{QUERY_STRING}变量来匹配。

正确的.htaccess配置

替换原有重定向规则为以下内容,即可精准匹配指定动态URL并跳转到静态地址:

RewriteEngine On

# 保留原有HTTPS强制跳转规则
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 匹配指定动态URL,重定向到/blog
RewriteCond %{QUERY_STRING} ^page=show&ex=2&dir=docs&lang=2&ser=1&cat=70&act=70&?$
RewriteRule ^index\.php$ https://example.com/blog? [L,R=301,QSD]

# 若需重定向到/company-exhibition,替换目标地址即可:
# RewriteCond %{QUERY_STRING} ^page=show&ex=2&dir=docs&lang=2&ser=1&cat=70&act=70&?$
# RewriteRule ^index\.php$ https://example.com/company-exhibition? [L,R=301,QSD]

配置细节说明

  • RewriteCond %{QUERY_STRING} ^page=show&ex=2&dir=docs&lang=2&ser=1&cat=70&act=70&?$:精准匹配查询字符串,末尾的&?兼容URL末尾有无多余&的情况。
  • RewriteRule ^index\.php$:匹配路径部分的index.php,注意.需转义为\.(正则中.是通配符)。
  • 目标地址末尾加?或使用QSD参数:二者均用于丢弃原查询字符串,避免重定向后URL携带旧参数。
  • R=301为永久重定向,适合正式环境;测试阶段建议先用R=302(临时重定向),避免浏览器缓存影响测试结果。

额外注意事项

  • 确认Apache服务器已开启mod_rewrite模块。
  • .htaccess需放置在网站根目录,且服务器允许使用该文件(检查httpd.conf中的AllowOverride All配置)。
  • 若之前使用过301重定向测试,需清空浏览器缓存后再验证新规则,浏览器会缓存永久重定向结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:10:00