#!/bin/bash # 重定向循环问题快速修复脚本 # 用于修复 ERR_TOO_MANY_REDIRECTS 错误 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 服务器配置 SERVER_IP="115.190.235.230" SSH_PORT="22" # SSH连接端口 APP_PORT="8006" # 应用访问端口 SERVER_USER="root" REMOTE_DIR="/var/www/chinese-family-tree" echo -e "${GREEN}=== 重定向循环问题修复脚本 ===${NC}\n" # 1. 检查当前 NEXTAUTH_URL 配置 echo -e "${YELLOW}步骤 1: 检查服务器当前配置${NC}" echo "正在连接服务器..." CURRENT_URL=$(ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP "cd $REMOTE_DIR && grep NEXTAUTH_URL .env | cut -d'=' -f2 | tr -d '\"'" 2>/dev/null || echo "未找到") if [ "$CURRENT_URL" = "未找到" ]; then echo -e "${RED}错误: 服务器上未找到 .env 文件或 NEXTAUTH_URL 配置${NC}" exit 1 fi echo -e "当前 NEXTAUTH_URL: ${YELLOW}$CURRENT_URL${NC}\n" # 2. 询问用户访问URL echo -e "${YELLOW}步骤 2: 确认用户访问URL${NC}" echo "用户在浏览器中通过哪个URL访问系统?" echo "1) http://115.190.235.230:3000" echo "2) http://115.190.235.230:8006" echo "3) 其他 (手动输入)" read -p "请选择 (1-3): " choice case $choice in 1) NEW_URL="http://$SERVER_IP:3000" ;; 2) NEW_URL="http://$SERVER_IP:$APP_PORT" ;; 3) read -p "请输入完整的访问URL (包括 http:// 和端口): " NEW_URL ;; *) echo -e "${RED}无效选择${NC}" exit 1 ;; esac echo -e "将设置 NEXTAUTH_URL 为: ${GREEN}$NEW_URL${NC}\n" # 3. 确认修改 read -p "确认修改? (y/n): " confirm if [ "$confirm" != "y" ]; then echo "已取消" exit 0 fi # 4. 更新服务器配置 echo -e "\n${YELLOW}步骤 3: 更新服务器配置${NC}" ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP << EOF cd $REMOTE_DIR # 备份原配置 cp .env .env.backup.\$(date +%Y%m%d_%H%M%S) # 更新 NEXTAUTH_URL sed -i 's|NEXTAUTH_URL=.*|NEXTAUTH_URL="$NEW_URL"|' .env echo "配置已更新" EOF echo -e "${GREEN}✓ 配置更新成功${NC}\n" # 5. 重启应用 echo -e "${YELLOW}步骤 4: 重启应用${NC}" ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP "pm2 restart chinese-family-tree" echo -e "${GREEN}✓ 应用已重启${NC}\n" # 6. 等待应用启动 echo "等待应用启动..." sleep 3 # 7. 检查应用状态 echo -e "\n${YELLOW}步骤 5: 检查应用状态${NC}" ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP "pm2 status chinese-family-tree" # 8. 显示后续步骤 echo -e "\n${GREEN}=== 修复完成 ===${NC}\n" echo -e "${YELLOW}后续步骤:${NC}" echo "1. 在浏览器中清除缓存和Cookie" echo " - Chrome/Edge: Ctrl+Shift+Delete (Windows) 或 Cmd+Shift+Delete (Mac)" echo " - 或者右键点击刷新按钮,选择'清空缓存并硬性重新加载'" echo "" echo "2. 重新访问: $NEW_URL" echo "" echo "3. 如果仍有问题,请查看日志:" echo " ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP 'pm2 logs chinese-family-tree'" echo "" echo -e "${GREEN}详细说明请参考: REDIRECT_LOOP_FIX.md${NC}"