代码之家  ›  专栏  ›  技术社区  ›  Codex73

多个文件的htaccess 301重定向

  •  2
  • Codex73  · 技术社区  · 15 年前

    我想知道htaccess上的多个条目是否适用于301重定向。

    我看到的问题是,旧网站文件的扩展名为“html”,命名方式不同,因此简单的全局重定向无法工作,每个文件名必须有一个规则。

    这个网站每天接待1000次访问,所以需要小心不要惩罚搜索引擎。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^file1\.html$ http://www.domain.com/file1.php [R=301,NC,L]
    RewriteRule ^file2\.html$ http://www.domain.com/file2.php [R=301,NC,L]
    RewriteRule ^file3\.html$ http://www.domain.com/file3.php [R=301,NC,L]
    RewriteRule ^file4\.html$ http://www.domain.com/file4.php [R=301,NC,L]
    

    由于旧文件是HTML类型,因此PHP头重写将不起作用。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Pascal MARTIN    15 年前

    我想您可以使用一些regex来减少正在使用的不同重写器的数量,因为它们看起来都是相同的。

    在您的情况下,只使用这个可能是可以的:

    RewriteRule ^(file1|file2|file3|file4)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]
    

    这样,您就可以准确地指定要重写的内容;但只有1个RewriteRule。

    或者,更一般一点:

    RewriteRule ^file([0-9]*)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L]
    

    它允许您定义要用xyz数字重写每个filexyz.html。(正如我使用的“*”,该重写规则根本不考虑任何数字;如果您至少需要一个数字,则应使用“+”)

    您还可以做一些更通用的事情——不确定您是否需要这样做,但类似这样的事情可能会:

    RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]
    

    这里,您正在重定向以.html结尾的所有内容

        2
  •  1
  •   VoteyDisciple    15 年前

    为什么不…

    RewriteRule ^file([0-9]+)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L]
    

    或者,如果你想重写 一切 在旧网站上…

    RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L]
    
        3
  •  0
  •   Ian Yang    15 年前

    也许你可以试试 RewriteMap Directive