Php 新Drupal站点的大写外部链接获得404

Php 新Drupal站点的大写外部链接获得404,php,apache,mod-rewrite,drupal-7,mod-speling,Php,Apache,Mod Rewrite,Drupal 7,Mod Speling,我有一个相当大的站点,站点构建者将所有内部路径自动设置为小写(在页面本身、菜单等中)。目前,在新的D7版本的站点中,我们还有其他站点链接到数百到1000多个节点的旧版本(大写) 因此,请点击http://www.example.com/alzheimers工作正常,但如果我手动输入http://www.example.com/Alzheimers我被带到我们的定制404(Drupal主题显示消息)。这是一个问题,因为它是一个具有大量指向旧URL的外部链接的高可见性站点 sitebuilders还

我有一个相当大的站点,站点构建者将所有内部路径自动设置为小写(在页面本身、菜单等中)。目前,在新的D7版本的站点中,我们还有其他站点链接到数百到1000多个节点的旧版本(大写)

因此,请点击
http://www.example.com/alzheimers
工作正常,但如果我手动输入
http://www.example.com/Alzheimers
我被带到我们的定制404(Drupal主题显示消息)。这是一个问题,因为它是一个具有大量指向旧URL的外部链接的高可见性站点

sitebuilders还试图手动输入重定向
/Alzheimers
/alzheimers
当然,这创造了无限重定向循环、黑洞、僵尸战争等等

我试图用apache“mod_speling”来处理这个问题,但没有成功,尽管我对这个mod没有丰富的经验。我想知道我是否可能遗漏了什么/是否需要特定的大写更改规则?我遵循的说明让我启用mod并重新启动Apache。这没用

所以我想知道我是否需要钩住主题(
hook_init
?)来获取请求的URL,并加入一点PHP来将字符串设置为较低。有什么想法吗?我在编写代码方面没有任何问题,但是如果有更简单的方法来处理这个问题,我们将非常感谢您的帮助

由于这对于任何为Windows编写并转移到Drupal或LAMP的站点来说都是一个典型的问题,所以我不可能是第一个需要对此进行修复的人

如果需要定制Drupal代码,那么最好在什么地方将其挂接以实现类似的功能?

我认为
hook_init()
在调用过程中会被调用得太晚(引导已经完成,路径也已在该点解析)。您可能想尝试使用
hook\u boot()

function mymodule_boot() {
  $_GET['q'] = strtolower($_GET['q']);
}
安装模块后,弹出到
系统
表中,并将模块的
重量
列设置为
-1
,以确保在调用任何其他模块的钩子之前调用钩子。然后冲洗Drupal的缓存,你就可以开始了


不过要小心,搜索引擎会将和视为两个单独的页面,内容重复。理想情况下,您可能希望执行从旧页面到新页面的301重定向,但这将非常复杂,而且(我认为)需要实现。

回答非常好。我也在考虑使用hook_boot,但我想我在某个地方读到过,其中一个没有在缓存页面上运行,所以我认为hook_init是一个更好的选择。对不起,我对这种格式不熟悉。丢失的编辑。我喜欢将模块重新排序到顶部+1的方法。我希望我有足够的repz来更新您的答案。\n所以我有一个请求应该通过apache进入我的服务器,但在这之前它显然被Drupal拦截了,或者其他什么,这是不可能的,因为Drupal在php内部运行,而php在apache内部运行(可以这么说)。我无法理解drupal如何覆盖我的服务器设置。(续)讽刺的是,当一个网站建设者试图使用drupal的mod系统将/Alz页面的重定向添加到/Alz页面时,他得到了一个好的老无限重定向循环错误业务。