我们最近将博客转移到了新网站,并且必须设置一些从旧文章到新位置的重定向。
现在,问题是我们发现在他的旧网站上他有各种不同的 URL 组合,因为他正在用它们测试各种 SEO 方法。
我的问题是,我已经将很多网址组合在一起,并获得了网站的很大一部分,但一次性类型的网址太多了,简直是疯了。我无法对所有这些网址使用通配符和正则表达式。
我不介意将它们作为单独的重定向放在我的 Apache 配置中,但我担心 100 多个重定向可能会使服务器陷入困境 - 有没有人有这方面的证据或以前遇到过这个问题?
答案1
这可能对您有帮助,也可能没用。在我工作的地方,我们有大量在二级顶级域名 (例如 net、org、各种 ccTLD) 中注册的域名,这些域名通常会重定向到主顶级域名 (在大多数情况下为 com)。最终结果是大约 1,000 个 URL 必须重定向到其他地方。
我们采用的方法是使用 Apache 的 mod_rewrite 来生成重定向,并将配置存储在 key:value 表中(mod_rewrite 可以读取)。基本配置如下所示:
RewriteEngine on
RewriteMap redir dbm=db:/path/to/redir-map.db
# store redir url in a var, or "XX" if not found
RewriteRule ^ - [E=url:${redir:%{REQUEST_URI}|XX}]
# if the redir url is found, do the redirect
RewriteCond %{ENV:url} !^XX$
RewriteRule ^.*$ %{ENV:url}? [R=permanent,L]
您的重定向映射将是一个纯文本文件,其中包含如下行:
# old uri new url
/some/path/funny-story http://newsite.blogtastic.com/funny-story
/some/path/my-birthday http://newsite.blogtastic.com/birthday-2009
DB 文件由以下程序构建(包含在 Apache 中):
httxt2dbm -v -f DB -i redir-map.txt -o redir-map-db
我喜欢这种方法,因为它将我们的 Apache 配置保持在最低限度,并且当我们需要添加/更改/删除重定向时,不需要我们重新加载配置(我们只需重建 DB 文件)。
在我们的案例中,每天大约有 35,000 次点击需要重定向。服务器是运行在 ESX 下的 CentOS 5.2 VM,配有一个 3 GHz Xeon。系统负载通常低于 0.1,CPU 使用率几乎为零。我们使用额外的 CustomLog 指令记录重定向,这占了服务器磁盘 I/O 的大部分(本身仍然很低)。此服务器还托管其他网站,因此重定向的影响实际上比这些数字所显示的要小一些。
我无法谈论这种方法与使用重定向指令而不是重写相比有何不同,但我无法想象它们的性能会有什么不同。我认为添加 100 多个重定向不会对您的服务器产生任何明显的影响。