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

AMP页面URL重写规则求助(PHP/.htaccess环境)

解决AMP页面URL重写的.htaccess规则问题

首先得明确你的核心需求:在现有CMS所有请求走index.php?goto的架构下,让AMP页面拥有更友好的URL格式,同时能正确路由到CMS的AMP处理逻辑。下面分两种URL格式给你对应的规则,你可以根据实际需求调整:

第一种:匹配/amp/blog.amp.php?catidx=xxx格式

如果希望保留.amp.php的后缀,同时传递catidx参数,你可以在现有.htaccess规则最前面添加以下代码:

RewriteEngine On

# 处理AMP的blog.amp.php格式请求
RewriteRule ^amp/blog\.amp\.php$ index.php?goto=amp_blog_handler [QSA,L]
  • ^amp/blog\.amp\.php$:精准匹配以/amp/blog.amp.php开头的请求(转义.是因为正则里.代表任意字符)
  • [QSA]:自动把原请求的catidx等参数追加到新的URL里,比如/amp/blog.amp.php?catidx=how-to-fix-misshapen-teeth会被转成index.php?goto=amp_blog_handler&catidx=how-to-fix-misshapen-teeth
  • [L]:表示这是最后一条规则,匹配后不再执行后续规则

第二种:匹配/amp/blog/topic.html伪静态格式

如果想要更简洁的伪静态URL,比如把/amp/blog/how-to-fix-misshapen-teeth.html路由到CMS处理,规则可以这么写:

RewriteEngine On

# 处理AMP的伪静态blog URL
RewriteRule ^amp/blog/([^/]+)\.html$ index.php?goto=amp_blog_topic&topic=$1 [QSA,L]
  • ^amp/blog/([^/]+)\.html$:捕获/amp/blog/和.html之间的字符串(比如how-to-fix-misshapen-teeth),把它作为topic参数传递
  • $1:对应正则里捕获的第一个分组内容,也就是上面提到的topic字符串
  • 同样[QSA]会保留额外的查询参数(如果有的话)

关键注意事项

  • 规则顺序很重要:一定要把AMP的规则放在现有CMS的通用路由规则前面,否则会被index.php?goto的规则先匹配,导致AMP规则不生效
  • 替换goto参数值:上面的amp_blog_handler和amp_blog_topic是示例,你需要替换成你的CMS中实际处理AMP内容的goto参数值(比如原来处理AMP的逻辑对应的goto值)
  • 测试规则:可以用curl -I命令测试,比如curl -I https://yourdomain.com/amp/blog/how-to-fix-misshapen-teeth.html,看返回的响应头是否符合预期
  • 冲突排查:如果现有规则里有RewriteCond或者其他匹配/amp/开头的规则,需要调整优先级,避免冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:08:19