如何通过根目录.htaccess将/blog下不存在子页重定向至/blog首页
.htaccess重定向规则配置方案
首先确认Apache已开启mod_rewrite模块,且站点配置中AllowOverride All参数已启用,允许.htaccess文件生效。
将以下规则添加到网站根目录的.htaccess文件中,需放置在其他重定向规则之前,避免被高优先级规则覆盖:
<IfModule mod_rewrite.c> RewriteEngine On # 仅对/blog路径下不存在的资源触发重定向 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^blog/.*$ /blog/ [L,R=301,NC] </IfModule>
规则说明
RewriteCond %{REQUEST_FILENAME} !-f:校验请求路径对应真实存在的文件,存在的文件不会触发重定向RewriteCond %{REQUEST_FILENAME} !-d:校验请求路径对应真实存在的目录,存在的目录不会触发重定向RewriteRule ^blog/.*$ /blog/ [L,R=301,NC]:匹配所有/blog/开头的路径,符合上述两个条件的请求301永久重定向到/blog/首页,NC标识不区分大小写,L标识匹配到该规则后不再执行后续重写规则
测试注意事项
前期测试时可将参数R=301改为R=302使用临时重定向,避免浏览器缓存永久重定向规则导致测试结果异常,确认规则生效后再改回R=301即可。
如果站点使用WordPress等自带重写规则的CMS,需将上述规则放置在CMS默认生成的重写规则块之前。
内容的提问来源于stack exchange,提问作者Michael Vestergaard
相关产品推荐
相关产品推荐

