我有一个包含超过3,000行的htaccess文件,主要归功于我从旧电子商务网站设置的301重定向。该文件大小为323kb,我担心它会成为加载时间和转换的负担。
有没有什么可以压缩(缩小?)文件到更小的尺寸或有人提供更好的想法来处理301重定向?
答案 0 :(得分:1)
如果重定向是简单重定向,即url1
到url2
,没有正则表达式等,并且您可以访问httpd.conf,那么您可以使用RewriteMap进行所有重定向您的.htaccess中可能只有一条规则来处理这些规则。
来自RewriteMap文档
查找的密钥由httpd缓存,直到mapfile的mtime(修改时间)发生更改,或重新启动httpd服务器。这可以确保在许多请求调用的地图上获得更好的性能。
答案 1 :(得分:1)
您是否可以指定一些正则表达式来分组/匹配所有这些重定向?然后,这提供了两个选项:
RewriteRule
标志使用(希望更小)[R=301]
个语句。第二种方法是将此重定向移动到重定向器脚本中,您可以使用PHP逻辑将旧电子商务URI解码为其当前格式,然后发出带有和301/302状态的响应和位置:指向当前的URI。这还需要您对此重定向器脚本执行遗留电子商务URI的全部重写,例如。
RewriteRule ^(product/.*) rewriter.php?uri=$1 [QSA,L]
如果没有一些例子,我无法给出更具体的答复。遗憾。
答案 2 :(得分:1)
之前我遇到过其中一些案例,大部分时间都可以用RewriteRules替换重定向语句。例如,如果您的网址来自:
http://shop.example.com/shop/category/product-id.html
对此:
http://shop.example.com/category/product-id.html
你可以通过这样的重写来获取它:
RewriteRule ^/shop/([a-z]+)/([0-9]+)\.html$ /$1/$2.html [L, R=301]
这仍然会导致301重定向,因此抓取工具仍然会知道这是永久移动。