.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
- 网站/论坛
/%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
。那就处理那个文件吧。如果我是你的室友,这将需要我几分钟来完成整个工作(我的答案+正确的重写地图文件)。在我的博客上给我留言(见我的个人资料)(任何帖子都可以),我会很乐意帮助你!我真的很感谢奥利弗的帮助。谢谢我将审查你的链接材料,并给这一个镜头。我会尽快让你知道它是如何运作的,并且很可能会接受你提供的帮助!你的博客有英文版本吗?