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

如何将带GET参数的article.php URL自动重定向至友好URL?

实现旧URL自动重定向到友好URL

当然可以搞定这个问题!你现在的规则只实现了友好URL到实际脚本的内部重写,但还没处理反向的重定向——也就是当用户直接访问带参数的旧URL时,自动跳转到友好版本。这样既可以统一站点的URL入口,对SEO也更友好。

完整的Rewrite规则配置

RewriteEngine On

# 第一步:将旧的带参数URL永久重定向到友好URL
RewriteCond %{THE_REQUEST} ^GET\ /article\.php\?name=([a-z,-]+)\s [NC]
RewriteRule ^ /article/%1? [R=301,L]

# 第二步:将友好URL内部重写为实际的PHP脚本
RewriteRule ^article/([a-z,-]+)$ article.php?name=$1 [L]

规则详解

  • 重定向规则部分:

    • %{THE_REQUEST}:捕获用户发起的原始HTTP请求行(比如GET /article.php?name=xyz HTTP/1.1),用这个变量判断可以避免内部重写触发重定向循环。
    • ^GET\ /article\.php\?name=([a-z,-]+)\s:匹配GET请求中访问article.php且带name参数的情况,并用括号捕获参数值(只匹配小写字母、连字符)。[NC]表示忽略大小写,如果你的name值包含大写字母,可以保留这个标记,或者把正则改成[a-zA-Z,-]+。
    • RewriteRule ^ /article/%1? [R=301,L]:将请求重定向到友好URL,%1对应前面捕获的参数值;末尾的?用于清除原URL的查询字符串;R=301是永久重定向(适合正式环境,利于搜索引擎收录),测试阶段可以改成R=302临时重定向;L表示处理完这条规则后停止后续规则的执行。
  • 内部重写规则部分:
    基于你原来的规则做了小调整,去掉了末尾多余的&,用[L]标记确保这是最后一条处理规则,将友好URL映射到实际的PHP脚本。

注意事项

  1. 测试阶段建议先用R=302临时重定向,确认跳转正常后再改成R=301永久重定向,因为301重定向会被浏览器缓存。
  2. 确保正则表达式[a-z,-]+覆盖了你所有可能的name参数值,如果有其他字符(比如数字),需要扩展正则,比如改成[a-z0-9,-]+。
  3. 不要重复写RewriteEngine On,只需要在规则最开头声明一次即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:34:03