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

如何为product.php与blog.php两个动态页面编写可用的.htaccess重写规则

PHP+MySQL场景下多动态页面.htaccess重写规则修复方案

完全可以为不同动态页面编写独立的重写规则,你当前规则失效的核心原因如下:

  • 两条RewriteRule的匹配模式完全一致,且第一条规则携带[L]标记,只要请求匹配到第一条规则就会终止后续所有匹配流程,博客相关的规则永远不会被触发
  • 你的访问URL明确带有/product/、/blog/固定路径前缀,但原有规则没有做前缀区分,无法将两类请求分流到对应处理脚本

适配当前访问URL的可用规则

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# 匹配blog前缀请求,转发到product-details.php(按你需求指定的对应关系)
RewriteRule ^blog/([^/]+)/?$ product-details.php?pro_slug=$1 [L,QSA]

# 匹配product前缀请求,转发到blog-details.php(按你需求指定的对应关系)
RewriteRule ^product/([^/]+)/?$ blog-details.php?n_slug=$1 [L,QSA]

注:如果你的实际需求是/product/前缀对应product-details.php、/blog/前缀对应blog-details.php,交换两条规则里的目标脚本即可,符合常规业务逻辑。

如果你需要保留原有规则中slug-id的传参格式(比如URL为www.test.com/product/agriculture-land-near-by-agra-1001的形式,末尾数字为ID),可以使用以下规则:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^blog/([^/]+)-([0-9]+)/?$ product-details.php?pro_slug=$1&id=$2 [L,QSA]
RewriteRule ^product/([^/]+)-([0-9]+)/?$ blog-details.php?n_slug=$1&n_id=$2 [L,QSA]

额外注意事项

  • 确保Apache服务器已开启mod_rewrite扩展
  • 站点根目录配置中AllowOverride参数需设置为All,否则.htaccess文件不会被加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:15:03