【问题标题】:htaccess 301 Redirection for Multiple Fileshtaccess 301 重定向多个文件
【发布时间】:2009-08-31 08:33:51
【问题描述】:

我想知道 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 标头。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    我想您可以使用一些正则表达式来减少您正在使用的不同 RewriteRules 的数量,因为它们看起来都一样。

    在你的情况下,只使用这个可能没问题:

    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.html,其中XYZ 是一个数字。 (因为我使用了'*',所以重写规则根本不会考虑任何数字;如果你想要至少一个数字,你应该使用'+')

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

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

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

    【讨论】:

      【解决方案2】:

      为什么不...

      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】:

        也许你可以试试RewriteMap Directive

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多