我已经搜索过,尝试了各种示例,除了创建明确的重定向语句列表之外,没有其他例子可以使用。
我遇到的最大问题是,虽然我可以访问网站部署网页,但我无法访问任何网络托管控制面板 - 网站访问权限已被继承,直到现在它已经很好了,但我认为它是要么运行旧版本的apache,要么重写规则是不允许的
Anywa,多年来,该网站已多次更改,在使用Google Webtools注册网站后,我找到了导致抓取错误的网页列表,因此创建了一个HTACCESS文件来处理这些内容。
多年来,已经有部署和命名为camel case和全部小写的文件夹,所以我想做的就是将文件夹中的所有文件重定向到.htaccess文件级别的新文件夹,即
我的.HTACCESS目前有120行,示例批次如下:
重定向301 /challenge/stanley_steamer.htm /lsr_history.html
重定向301 /challenge/stanley_steamer.html /lsr_history.html
重定向301 /Challenge/index.htm /lsr_history.html
重定向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
正如您所看到的,我在某些情况下文件夹名称为camel,其他文件名较低,以及其他存在爬网错误日志中列出的htm和同名html文件的情况。
我想要做的就是,在上面的例子中,将所有页面从/ Challenge /和/ challenge /重定向到lsr_history.html,但是/ Challenge / Sponsors /中的所有文件都转到sponsors.html。
我还有一个巨大的单个团队页面列表,我逐个列出,每个页面重定向到新的团队页面
我试过这样的例子:
RedirectMatch 301 ^ / [Cc] hallenge / / challenge.html,但这会返回'错误404未找到'。
我将非常感激地收到有关如何减少我的htaccess文件以简化此操作的任何想法或示例
问候
马丁
答案 0 :(得分:1)
如果可以避免的话,我不会在匹配字符串中搜索匹配字符串中的案例 - 您是否尝试过以小写字母指定RedirectMatch
,并将[NC]
添加到最后每一行? (这将告诉mod_rewrite忽略大小写和匹配,这可能会节省你一些时间)
如果您有类似格式的重写集合,为什么不将它们与一组特定的规则组合在一起呢?这样,您可以覆盖所有传入的URL,其中一个子目录包含一个规则,所有传入的URL都包含一个子目录,另一个具有另一个规则。如果没有别的,它可以帮助简化查看.htaccess文件:)
(把我所建议的所有东西用大剂量的盐,我仍然要自己掌握mod_rewrite的黑色魔法)