PrestaShop无尾斜杠分类页面301重定向至带尾斜杠
解决方案:PrestaShop分类页无尾斜杠301重定向到带尾斜杠版本
你的规则无效的核心原因是重定向规则放在了PrestaShop默认重写规则之后,默认规则里的[L]标志会让重写引擎停止处理后续规则,导致你的重定向永远不会被触发。
正确的做法是把重定向规则放到.htaccess文件的最顶部,在所有PrestaShop默认规则之前,同时调整规则确保兼容站点目录结构:
# 先添加301重定向规则(放在文件最顶部) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !\.html$ RewriteRule ^(.*[^/])$ %{ENV:REWRITEBASE}$1/ [L,R=301] # 以下是你原有的PrestaShop规则 RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
规则说明:
RewriteCond %{REQUEST_FILENAME} !-f:跳过真实存在的文件(比如图片、CSS等静态资源)RewriteCond %{REQUEST_FILENAME} !-d:跳过真实存在的物理目录RewriteCond %{REQUEST_URI} !\.html$:保留.html结尾的产品页面不被重定向RewriteRule ^(.*[^/])$ %{ENV:REWRITEBASE}$1/ [L,R=301]:匹配所有不以斜杠结尾的URL,301重定向到带尾斜杠的版本,%{ENV:REWRITEBASE}确保适配站点不在根目录的情况
注意事项:
- 修改后清空浏览器缓存再测试,因为301永久重定向会被浏览器缓存
- 如果你的站点在根目录,
%{ENV:REWRITEBASE}就是/,规则会正常工作;如果在子目录,PrestaShop会自动设置这个环境变量,无需手动修改
内容的提问来源于stack exchange,提问作者ClickClack
相关产品推荐
相关产品推荐

