【问题标题】:add trailing slash to 404 url so it can be redirected将斜杠添加到 404 url​​ 以便可以重定向
【发布时间】:2012-03-09 16:51:37
【问题描述】:

情况:将旧 WordPress 网站移至新域;相同的永久链接结构,301 美元 1

搬家前不久,标签已被清理;从超过 2000 个标签减少到十几个标签;尽管这些标签是在现场合并的,但显然,很多 404 开始了,因为其中许多旧标签已在网站上使用多年,并在整个互联网上被广泛索引。

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

我一直在重定向 404,因为它们通过 404 重定向插件 http://wordpress.org/extend/plugins/404-redirected/(记录并允许创建重定向)、Google 网站管理员工具数据(报告 404/抓取错误...)、Broken Link Checker @987654322 的组合发生@ 并将重定向和 mod_rewrites 添加到我的 htaccess,因为每个解决方案似乎最经济。

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

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

Wordpress 会自动重定向页面、帖子、标签、缺少尾部斜杠的类别,我已经创建了大量的重定向,但是从旧标签到新标签,但最近我遇到了大量旧标签 url 请求的 404缺少尾部斜杠,其中大部分我已经固定为带有尾部斜杠的 url。即

  • /tag/frank-sinatra/ 301 --> /tag/singers/ = 200 成功
  • /tag/frank-sinatra = 404 未找到

在可以将斜杠强制到 url 末尾之前,它们会被 404 处理,以便可以重定向

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

我不得不相信这一定是一个非常普遍的问题,但到目前为止,我还没有找到智能工作的解决方案!

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您的所有网址都以斜杠结尾,那么解决此问题的一种方法是重定向那些没有斜杠的网址。这将产生 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] 
      

      【讨论】:

      • 您会使用什么规则将其仅应用于 WordPress 类别/标签和“漂亮网址”(永久链接)但保留任何静态网址(扩展名为 .htm、.html、.php、 .xml) 单独? - 谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多