Apache 如何为大型网站实现url页面重定向
我的网站如carparts.co.uk有355000个独特的URL。(这是一个汽车零件目录网站)(在网站管理员工具上显示,其中174000个已编入索引) 我们想将我们的网站移动到一个新的购物车平台(prestashop),并完全改变了目录的结构,这意味着我们现在有了一组新的URL。(尽管主域名没有改变,仍然是carparts.co.uk) 我现在有一个excel表格,其中有一列355000个“旧”url,与新目录中最接近的等效url相匹配。 e、 g (有355000个类似的重定向) 我的问题是我应该怎么做? 我知道你可以使用htaccess来做这件事,但我很担心,因为我读到htaccess会减慢网站的速度,如果它非常大的话(这种慢是只有在尝试访问一个旧的URL时才会遇到的吗?),还是会影响我所有URL的速度Apache 如何为大型网站实现url页面重定向,apache,.htaccess,url,redirect,Apache,.htaccess,Url,Redirect,我的网站如carparts.co.uk有355000个独特的URL。(这是一个汽车零件目录网站)(在网站管理员工具上显示,其中174000个已编入索引) 我们想将我们的网站移动到一个新的购物车平台(prestashop),并完全改变了目录的结构,这意味着我们现在有了一组新的URL。(尽管主域名没有改变,仍然是carparts.co.uk) 我现在有一个excel表格,其中有一列355000个“旧”url,与新目录中最接近的等效url相匹配。 e、 g (有355000个类似的重定向) 我的问题是
那么,对于我来说,处理如此大量的URL最好的办法是什么呢?您最好的办法可能是设置一个重写映射。这需要服务器vhost config访问权限,因为您无法从htaccess文件配置映射(尽管您可以使用一个)。映射由apache缓存,因此您无需担心不断的文件访问 简单地说:
RewriteMap redirects txt:/full/path/to/redirect-map.txt
然后,在文件redirect map.txt
中只会有一个“from”和“to”:
然后在htaccess文件或vhost配置中,只需执行以下操作:
RewriteCond $(redirects:$1|0) !=0
RewriteRule ^(.*)$ $(redirects:$1) [L,R]
使用htaccess会减慢网站的运行速度,因为它需要为每个请求检查多个文件,并且会为每个请求动态检查这些文件 对于路由较深的站点而言,这更是一个问题。例如,请求:
www.example.com/folder1/folder2/folder3/folder4/index.htm
需要检查一下
- 主配置文件
- 然后在文档根目录中添加任何覆盖 htaccess文件
- 然后在folder1 htaccess文件中添加任何覆盖
- 然后在folder2 htaccess文件中添加任何覆盖
因此,这可能是htaccess可能是更好解决方案的少数几个用例之一,即使您可以访问主配置文件。
它会影响我所有URL的速度吗?
是的,使用.htaccess会降低整个站点的速度,因为它必须在每个页面请求上读取.htaccess文件。如果您访问服务器配置,最好将它们放在那里,这样可以降低性能损失。这是一个很好的解决方案,但如果OP有权访问,我仍然建议使用config vs.htaccess。
RewriteCond $(redirects:$1|0) !=0
RewriteRule ^(.*)$ $(redirects:$1) [L,R]
www.example.com/folder1/folder2/folder3/folder4/index.htm