.htaccess mod rewrite regex apache混乱导致10k 404';每天多少钱

.htaccess mod rewrite regex apache混乱导致10k 404';每天多少钱,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我已经回顾了这里发布的许多与.htaccess、apache、mod rewrite和regex相关的问题,但我不明白。我尝试了一些不同的方法,但要么我把事情复杂化了,要么我犯了初学者的错误。不管怎样,我已经做了几天了,已经完全把事情搞得乱七八糟,就像每天10000个404的数字所显示的那样 我的网站 我有一个WordPress网站,包含23000多篇文章,分为1200多个类别。该网站以流式视频文件、行业新闻、节目评论、电影、phpbb论坛等为特色,其结构如下: one-piece-episod

我已经回顾了这里发布的许多与
.htaccess
apache
mod rewrite
regex
相关的问题,但我不明白。我尝试了一些不同的方法,但要么我把事情复杂化了,要么我犯了初学者的错误。不管怎样,我已经做了几天了,已经完全把事情搞得乱七八糟,就像每天10000个404的数字所显示的那样

我的网站

我有一个WordPress网站,包含23000多篇文章,分为1200多个类别。该网站以流式视频文件、行业新闻、节目评论、电影、phpbb论坛等为特色,其结构如下:

one-piece-episode-528​ /watch-anime/o/one-piece/​one-piece-episode-528​.html
dexter-season-6-episode-1 /watch-interesting-stuff/d/dexter/dexter-season-6-episode-1.html
breaking-bad-full-season-3 /watch-interesting-stuff/b/breaking-bad/​breaking-bad-full-season-3.html
  • 场地/基本类别(0和a-z)/子类别(系列名称)/ 所有流媒体剧集的帖子(剧集名称.html)
  • 所有流媒体电影的site/movies/post title.html
  • site/news/postitle.html
  • site/reviews/postitle.html
  • 用于分类页面的site/page.html
  • 网站/论坛
Permalink结构是
/%category%/%postname%.html

/one-piece-episode-528​.html
我正在使用Yoast Wordpress SEO插件,并且可以选择为目录和类别添加一个尾部斜杠

这是当前的
.htaccess

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress
应该是

/watch-anime/o/one-piece/​one-piece-episode-528​.html
/watch-anime​/w​/welcome-to-the-nhk​/welcome-to-the-nhk-episode-14​.html
我犯的一个错误导致了这个问题。。。“
/watch anime/letter/series title/eposion title/
”至“
/watch anime/letter/series title/eposion title.html
”。因此,我们需要从单个帖子和add.html中删除尾部斜杠

/watch-anime​/w​/welcome-to-the-nhk​/welcome-to-the-nhk-episode-14​/
应该是

/watch-anime/o/one-piece/​one-piece-episode-528​.html
/watch-anime​/w​/welcome-to-the-nhk​/welcome-to-the-nhk-episode-14​.html
同样的错误导致了这个问题,当与旧的网站结构问题相结合。。。“
/eposion title.html
”必须是“
/watch anime/letter/series title/eposion title.html

需要

/watch-anime/o/one-piece/​one-piece-episode-528​.html
正如你所看到的,我在迁移站点帖子结构和修复它之间把事情搞得一团糟。我现在请求您提供任何帮助,以获得适当的.htaccess文件,该文件将处理这些301重定向


感谢您提供的一切帮助

我不知道RewriteMap是否能与
.htaccess
文件一起工作,但无论如何,这里是我的虚拟主机解决方案,它应该可以完美地工作

创建一个文件。看见这是一个非常简单的文本文件:首先,没有“/”的错误URL,然后一个空格(至少),然后是正确的URL,如下所示:

one-piece-episode-528​ /watch-anime/o/one-piece/​one-piece-episode-528​.html
dexter-season-6-episode-1 /watch-interesting-stuff/d/dexter/dexter-season-6-episode-1.html
breaking-bad-full-season-3 /watch-interesting-stuff/b/breaking-bad/​breaking-bad-full-season-3.html
等等

将此简单文本文件转换为哈希映射。例如:

httxt2dbm -i mapanime.txt -o mapanime.map
现在在vhost中声明它:

RewriteMap mapanime \
    dbm:/pathtofile/mapanime.map
因此,总体而言,您的vhost应该如下所示:

<VirtualHost *>
    RewriteEngine On
    RewriteMap mapanime \
        dbm:/pathtofile/mapanime.map
    # don't touch the URL, but try to search if it exists in mapanime
    RewriteRule /([^/]*)/$ - [QSA,NC,E=VARANIME:${mapanime:$1|notfound}]
    # if VARANIME not empty *and*
    #   VARANIME different from "notfound":
    RewriteCond %{ENV:VARANIME} ^(notfound|)$
    # then redirect it to the right URL:
    # QSA = query string append
    # R = redirect, 301 = definitive redirect
    # L = last = don't go further
    RewriteRule . %{ENV:VARANIME} [QSA,R=301,L]
</VirtualHost>

我最喜欢的检查regexp的工具:


(别忘了选择ereg(POSIX)而不是preg(PCRE)!

要在问题中包括当前的.htaccess文件吗?请告诉我这些不是URI路径中的空格!不,URL中没有空格。当前的.htaccess是相当默认的。当我不能让它工作时,我把所有的东西都拔了出来。我将编辑这篇文章,并提供一些真实的例子。非常感谢!不过我有个问题。创建地图文件时,是否需要为站点上的每个帖子添加一行?我们现在有超过21000篇文章,如果我对每一篇都这样做,文件将有超过84000行,因为我试图解释三个可能错误的url中的每一个。也许我又一次把事情复杂化了。库多在德克斯特参考号上。哈哈。如果你用“坏消息”来代替,情况可能会更好。坏消息是<代码>是您必须转储所有相应的数据。但多亏了mysql,这应该是一个孩子的游戏。例如:删除所有短链接:
mysql-u用户名-ppassword wordpress数据库名-e“按帖子名从wp\u帖子中选择帖子名”
如果您想将它们放到文件中:
mysql-u用户名-ppassword wordpress数据库名-e“按帖子名从wp\u帖子中选择帖子名”>>filename
。那就处理那个文件吧。如果我是你的室友,这将需要我几分钟来完成整个工作(我的答案+正确的重写地图文件)。在我的博客上给我留言(见我的个人资料)(任何帖子都可以),我会很乐意帮助你!我真的很感谢奥利弗的帮助。谢谢我将审查你的链接材料,并给这一个镜头。我会尽快让你知道它是如何运作的,并且很可能会接受你提供的帮助!你的博客有英文版本吗?