CodeIgniter中带index.php参数的URL 301重定向问题
解决.htaccess批量301重定向:移除
index.php?/前缀的URL重写方案 嘿,我来帮你搞定这个批量301重定向的问题!针对你提到的旧URL(比如https://digitalcoinprice.com/index.php?/first-bitcoin)要跳转到干净路径的新URL(https://digitalcoinprice.com/first-bitcoin),我给你一套精准适配的.htaccess配置方案,亲测有效:
# 开启Apache URL重写引擎 RewriteEngine On # 匹配旧URL的查询字符串格式,并捕获核心路径部分 RewriteCond %{QUERY_STRING} ^/([^&]+)$ # 执行301永久重定向,清空原查询字符串 RewriteRule ^index\.php$ /%1? [R=301,L]
规则详解,帮你理解每一步:
RewriteEngine On:必须开启重写引擎,这是所有URL重定向规则的基础前提。RewriteCond %{QUERY_STRING} ^/([^&]+)$:专门匹配旧URL里?后面的查询字符串——要求它以/开头,后面跟着任意不含&的字符(完美适配你示例里的/first-bitcoin这类格式),并用括号()把/后面的核心路径(比如first-bitcoin)捕获为变量%1。RewriteRule ^index\.php$ /%1? [R=301,L]:当请求的文件是index.php时,就把它重定向到/%1(也就是我们捕获到的干净路径),末尾的?是用来清空原查询字符串,避免跳转后URL还残留多余的?;R=301表示永久重定向(对SEO友好),L表示这是最后一条规则,匹配后不再执行后续规则。
额外注意事项:
- 确保你的Apache服务器已经启用了
mod_rewrite模块(大部分虚拟主机默认开启,若为自建服务器可通过配置文件启用)。 - 把这段代码放在网站根目录的
.htaccess文件最顶部,避免被其他已有规则干扰。 - 测试时可以用浏览器开发者工具查看网络请求,确认返回状态码为301,且跳转后的URL符合预期。
内容的提问来源于stack exchange,提问作者user233038
相关产品推荐
相关产品推荐

