Drupal 7更新模块时/authorize.php重定向HTTPS且提示不存在
我之前遇到过类似的Drupal 7开发环境更新跳转问题,结合你的情况,大概率是生产环境遗留的HTTPS配置在搞鬼,给你几个具体的排查和解决方向:
解决方向与步骤
1. 临时在settings.php中指定HTTP的$base_url
因为你没在settings.php里定义$base_url,Drupal会优先从数据库的变量表读取配置——而这个表是从生产环境复制来的,大概率还保留着HTTPS的地址。直接在开发环境的sites/default/settings.php末尾添加:
$base_url = 'http://你的开发环境域名'; // 示例:http://dev.example.com
保存后清除Drupal缓存,再尝试更新操作,authorize.php的跳转应该会使用正确的HTTP协议。
2. 检查并修正数据库中的URL相关变量
如果不想硬编码$base_url,可以直接修改数据库里的配置:
- 用数据库管理工具(比如phpMyAdmin)打开你的Drupal数据库
- 执行SQL查询:
SELECT name, value FROM variable WHERE name IN ('base_url', 'https', 'redirect_https');
- 如果
base_url的值是生产环境的HTTPS地址,把它改成开发环境的HTTP地址;如果https或redirect_https的值是1,改成0 - 修改后,一定要清除Drupal缓存(可以手动删除
sites/default/files/cache目录下的所有文件)
3. 彻底检查.htaccess的HTTPS重定向规则
虽然你说已经修改了.htaccess,但可能没完全移除强制HTTPS的规则:
- 打开开发环境的
.htaccess文件,查找类似以下的规则:
RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- 把这些规则注释掉或者直接删除
- 另外,检查文件末尾有没有针对
authorize.php的特殊重定向规则,有的话也要确保是HTTP协议
4. 排查Apache虚拟主机配置
有时候虚拟主机的配置会覆盖.htaccess的规则:
- 找到开发环境的Apache虚拟主机配置文件(通常在
/etc/httpd/conf.d/或/etc/apache2/sites-available/目录下) - 检查是否有强制跳转到HTTPS的
Redirect或RewriteRule指令 - 如果有,注释掉这些指令,然后重启Apache服务(
service httpd restart或service apache2 restart)
5. 验证FTP配置的站点地址
虽然FTP是文件传输,但确保你在Drupal更新页面填写的FTP站点地址是开发环境的HTTP域名,而不是生产的HTTPS地址,避免跳转逻辑混淆。
这些步骤应该能解决authorize.php被错误重定向到HTTPS的问题,本质上是开发环境的URL配置没有完全从生产环境的HTTPS切换过来。
内容的提问来源于stack exchange,提问作者Daanist
相关产品推荐
相关产品推荐

