多个301重定向多个页面或URL

时间:2013-09-18 16:03:17

标签: .htaccess redirect

我正在重新设计我的商店,所以旧的结构已经改变了新的结构。因此,尝试使用新的重定向所有旧产品。

我有超过20-25种产品,如果我为每种产品编写重定向规则,而不是以这种方式编写

Redirect 301 /store/products/somename/ http://store.domain.com/nicecar
Redirect 301 /store/products/blabla/ http://store.domain.com/newpros
Redirect 301 /store/products/cubacuba/ http://store.domain.com/illollo

这会变得很长并且可能会减慢网站的速度。那么无论如何都要优化这个重定向规则吗?

非常感谢

2 个答案:

答案 0 :(得分:4)

最好根据您的要求使用RewriteMap。以下是如何使用它的示例:

  1. 将以下行添加到httpd.conf文件中:

    RewriteMap prodMap txt://path/to/prodMap.txt
    
  2. /path/to/prodMap.txt一样创建一个文本文件:

    somename nicecar
    blabla newpros
    
  3. DOCUMENT_ROOT下的.htaccess文件中添加以下行:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    
    RewriteRule ^store/products/([^/]+)/?$ http://store.domain.com/${prodMap:$1} [L,R=301,NC]
    

答案 1 :(得分:1)

如果您可以访问vhost或服务器配置,则可以设置rewrite map,但实际上,它可能比仅有大量重定向要快一些。您的htaccess文件中的重定向会被缓存,因此只要未修改htaccess文件,就不需要重新读取这些指令。

有一个非常详细的教程,介绍如何使用RewriteMap以及可以使用的各种映射。