更新: 自重定向1.0-rc2(2015年6月)起,Drupal问题#1796596已提交。现在,针对此问题的正确解决方案是升级到重定向模块的最新稳定版本,然后运行数据库更新。您拥有的所有循环重定向都将被安全清除。
发生此问题是由于重定向模块中的错误。您可以通过更改页面的URL(或者,如果使用pathauto,也可以只是页面的标题)来触发它,然后将其更改回原来的样子。
例如,假设我有一个名为“ company”的页面,并且将标题更改为“ Our company”(将URL别名更改为our-company)。然后,我决定我实际上是首选第一种方式,因此我再次编辑该节点并将标题更改回“公司”。到那时,错误消息“ 糟糕,看起来此请求试图创建一个无限循环。我们在这里不允许这样做。我们是一个专业网站! ”将开始在“公司”页面上显示。
有三种解决方法,具体取决于您最轻松的选择。他们的难度/勇敢程度从上到下。
Drupal / PHP方法
关于这个主题,有一个很长的Drupal错误:问题#1796596,并且有一个很好的工作补丁可以解决注释#124中的问题。
希望此修复程序很快会提交到“重定向”模块中以供下载。但是,已经过去一年多了,在这方面没有任何进展的迹象。
SQL方法
解决该问题的最快方法是对数据库进行SQL查询,如下所示。 请务必谨慎,只有在您知道自己在做什么的情况下,才尝试使用此方法-首先在网站的开发副本上进行尝试,并确保您有备份,然后再测试更改,以防万一您需要回滚。如果您使用的是i18n,请格外小心,并更好地测试第一个查询。运行第一个查询以显示将要删除的内容,第二个查询实际执行删除操作。
--Show records to be deleted:
SELECT r.rid, r.language, r.source, r.redirect
FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
--Delete redirects shown in above query:
DELETE r FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
如果您不知道如何应用补丁程序或运行SQL查询,则需要手动解决问题。不用担心,这实际上很容易做到(但是与其他方法相比比较耗时):
手动方法:
对于显示警告消息的每个页面:
- 编辑页面
- 滚动到编辑表单的底部
- 注意页面的主要URL。显示在“ URL路径设置”下方,例如“别名:公司”表示页面的URL为“公司”。您可以单击“ URL路径设置”以访问其部分,如果不确定,请确认URL别名。
- 现在,单击“ URL重定向”。将显示到当前页面的重定向。至少有一个重定向与您在步骤3中记下的URL别名相同。此列表中可能有多个重定向与URL别名匹配。
- 删除所有与URL别名相同的重定向。这些是导致循环和错误消息显示的问题数据。
- 一旦在“ URL重定向”下不再有与URL路径设置下的问题页面的URL别名完全匹配的重定向,该错误消息就会消失。