.htaccess的RewriteRule不生效

由于网站链接改版,需要对一些旧的已经被收录的内容进行301跳转。规则如下

规则很简单,就是添加一个.html后缀。于是我在.htaccess中写入了一条RewriteRule:

但是,实际访问/post/123时,并没有按预期跳转,而是返回了一个404页面。由于我其他RewriteRule生效正常,所以排除了例如没有开启Rewrite Mod这一类的问题。焦点放在了这条规则上。然而这条规则太简单,以至于一眼就能明白肯定正确。在网上查了许久也没找到答案,于是我还是去看Apache的官方文档怎么说吧。果然,问题找到了,RewriteRule是顺序生效的,这点和Nginx一样,当第一条规则匹配生效后,第二条匹配到相同规则的URL就不会使用这条规则了。而我的.htaccess规则如下:

显然,上面的RewriteCond已经匹配到了我想要跳转的URL,然后执行了这条规则:

所以,问题迎刃而解,把我所需要执行的规则上移即可:

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注