如何为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
相关产品推荐
相关产品推荐

