将尾部斜杠添加到404 url​​,以便可以重定向

时间:2012-02-18 15:58:11

标签: regex wordpress mod-rewrite redirect http-status-code-404

情况:将旧的WordPress网站迁移到新域名;相同的永久链接结构,301'd $ 1

移动前不久,标签已被清理干净;从超过2000个标签减少到十几个标签;虽然这些标签在现场合并,显然,很多404的标签已经开始,因为许多旧标签已在网站上使用多年,并在互联网上广泛索引。

  • 即。 (/ tag / frank-sinatra /或/ tag / tony-bennett / merged并重定向到/ tag / singers /)

我通过404重定向插件http://wordpress.org/extend/plugins/404-redirected/(日志并允许创建重定向),Google网站管理员工具数据(报告404的/抓取错误...),Broken Link Checker重定向404。 http://wordpress.org/extend/plugins/broken-link-checker/并将重定向和mod_rewrites添加到我的htaccess中,因为每个解决方案看起来最经济。

我的永久链接/规范网址结构(/%postname%/)使用尾部斜杠,即。 / post-or-page-name /或/ tag / tag-name /或/ category / category-name /

那就是说,这是我遇到的一个问题,我无法使用重定向/ mod_rewrite正则表达式解决自己:

Wordpress自动重定向页面,帖子,标签,缺少尾随尾部斜杠的类别,我创建了相当多的重定向但是从旧标签到新标签但是最近我遇到了大量的404用于旧标签网址请求缺少尾部斜杠,其中大多数我已经修复为带有斜杠的网址。即

  • / tag / frank-sinatra / 301 - > / tag / singers / = 200成功
  • / tag / frank-sinatra = 404 Not Found

在将尾随斜杠强制到url的末尾以便可以重定向之前,它们已经过404了

除了为每个缺少尾部斜线的旧标签网址创建单独的301之外,还有其他方法吗?

我不得不相信这一定是一个非常常见的问题,但到目前为止,工作智能解决方案还是让我无法实现!

感谢那些比我更了解并且足够慷慨地分享解决方案的人:)

2 个答案:

答案 0 :(得分:0)

如果所有网址都以尾部斜杠结尾,那么解决此问题的一种方法是重定向那些没有网址的网址。这将导致2 301,但这比404更好。

为此,请将以下内容添加到站点根目录中的.htaccess文件中。确保这些规则出现在其他现有规则之前。

RewriteEngine on
RewriteBase /

#if not an existing file
RewriteCond %{REQUEST_FILENAME} !-f
#redirect urls without a trailing slash 
RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

如果缺少尾部斜杠的网址都是标记网址,请将最后一条规则更改为

RewriteRule ^(tag/.*[^/])$ $1/ [L,R=301] 

答案 1 :(得分:0)

另一种方法是使用?在您的个人重定向中,使斜杠成为可选。 RewriteRule ^ / tag / frank-sinatra /?$ / tag / singers /