我已经搜索,尝试了各种示例,但没有一个,除了创建一个明确的重定向语句列表似乎有效。
我遇到的最大问题是,尽管我有权将网页部署到该站点,但我无权访问任何 Web 托管控制面板 - 站点访问是继承的,直到现在它都很好,但我认为它是要么运行旧版本的 apache,要么不允许重写规则。
无论如何,这些年来,该网站已经更改了几次,并且在使用 Google Webtools 注册该网站后,我发现了出现抓取错误的页面列表,因此创建了一个 HTACCESS 文件来处理这些问题。
多年来,已经部署并命名为驼峰式和全部小写的文件夹,所以我想做的就是将文件夹中的所有文件重定向到 .htaccess 文件级别的新文件夹,即
My .HTACCESS 当前有120行,示例批处理如下:
redirect 301 /challenge/stanley_steamer.htm /lsr_history.html
redirect 301 /challenge/stanley_steamer.html /lsr_history.html
redirect 301 /Challenge/index.htm /lsr_history.html
redirect 301 /Challenge/Record.htm /lsr_history.html
重定向 301 /Challenge/Stanley_Steamer.htm /lsr_history.html
重定向 301 /Challenge/Sponsors/Avery_Weigh-Tronix.htm /sponsors.html
重定向 301 /contact/index.html /contact.html
重定向 301 /design/details.html /design.html
重定向 301 /design/index.html /design.html
重定向 301 /Design/Engine-drive_train.htm /design.html
重定向 301 /Design/Rear.htm /design.html
重定向 301 /Design/Home_Page.htm /design.html
重定向 301 /Design/index.htm /design.html
如您所见,我有一些文件夹名称是骆驼的情况,其他情况下,还有其他情况htm 和爬网错误日志中列出的同名 html 文件。
在上面的示例中,我要做的只是将所有页面从 /Challenge/ 和 /challenge/ 重定向到 lsr_history.html,但将 /Challenge/Sponsors/ 中的所有文件重定向到 Sponsors.html。
我还有一个巨大的个人团队页面列表,我一一列出,每个页面都重定向到新的团队页面。
我尝试过以下示例:
RedirectMatch 301 ^/[Cc]hallenge/ /challenge.html,但这会返回“找不到错误 404”。
任何关于如何减少我的 htaccess 文件以简化它的想法或示例将不胜感激。
问候
马丁
问问题
942 次
1 回答
1
如果可以避免这种情况,我不会费心在匹配字符串中搜索大小写 - 您是否尝试过仅指定RedirectMatch
小写字母并附[NC]
加到每一行的末尾?(这将告诉 mod_rewrite 忽略大小写并匹配,这可能会为您节省一些时间)
如果您有类似格式的重写集合,为什么不将它们与每个特定的一组规则组合在一起呢?这样,您可以覆盖,例如,所有传入 URL 的一个子目录和一个规则,以及所有传入 URL 的单个子目录和另一个规则。如果不出意外,它可以帮助简化查看 .htaccess 文件:)
(把我建议的一切都用大量的盐,我自己还在掌握 mod_rewrite 的黑魔法)
于 2010-01-18T18:00:21.640 回答