如何用.htaccess将带smp查询字符串的URL重定向为带p的同值URL?
解决.htaccess查询字符串重定向问题
你的配置存在几处问题,调整后即可正常生效:
错误点梳理
- 查询字符串不会包含开头的斜杠,原配置里
RewriteCond的^/?smp=多了/?,导致匹配失效 - 目标URL里用
$无法引用捕获的数字,需用%1对应RewriteCond中括号捕获的分组内容 - 若无需强制跳转至www域名,目标URL里的
www可删除,保持与来源域名一致
正确配置
如果仅需根路径下的重定向,且保持域名一致:
RewriteEngine On RewriteCond %{QUERY_STRING} ^smp=([0-9]+)$ [NC] RewriteRule ^$ /?p=%1 [R=302,L]
测试确认正常后,可将R=302(临时重定向)改为R=301(永久重定向)。如果需要指定完整HTTPS域名:
RewriteEngine On RewriteCond %{QUERY_STRING} ^smp=([0-9]+)$ [NC] RewriteRule ^$ https://example.com/?p=%1 [R=302,L]
配置说明
%1用于引用RewriteCond中括号捕获的数字串,若捕获来自RewriteRule则使用$1[NC]表示忽略大小写,对查询字符串smp的大小写不敏感[L]表示当前规则匹配后不再执行后续规则
内容的提问来源于stack exchange,提问作者ArunaLK
相关产品推荐
相关产品推荐

