- 세상의 모든 계산기 자유(질문) 게시판 일반 ()
xe(rhymix) 짧은주소 사용 중 리디렉션으로 인한 '색인 생성 안됨' 문제 해결중
1. 문제 인식
가끔 구글 서치 콘솔에 들어가 보면
색인 되지 않은 페이지가 너무 많은 것이 눈에 거슬립니다.

리디렉션이 9만건 가까이 발생하고 있는데, 딱히 문제가 없어서 방치하고 있었습니다.
2. AI (gemini) 와 상담
AI(gemini) 에게 물어보니 이렇게 답변합니다.
색인이 생성되지 않는 주요 원인 상세 분석
1. 리디렉션이 포함된 페이지 (89,080개)
* 의미: 이 항목은 구글 검색 로봇(구글봇)이 특정 페이지 주소로 방문했지만, 웹사이트가 로봇을 다른 주소로 자동 안내(리디렉션)했다는 것을 의미합니다.
* 일반적인 경우: 예를 들어, 보안 접속을 위해 http:// 주소를 https://로 보내거나, example.com을 www.example.com으로 통일하는 등의 리디렉션은 매우 흔하고 권장되는 방식입니다.
* 주의할 점: 하지만 그 수가 매우 많다는 점을 고려할 때, 혹시 사이트 내부적으로 불필요한 리디렉션이 반복적으로 일어나고 있거나(리디렉션 체인), 의도치 않은 주소로 잘못 연결되고 있을 가능성이 있습니다. 이 부분은 확인이 필요합니다.2. 적절한 표준 태그가 포함된 대체 페이지 (40,420개)
* 의미: 내용이 거의 동일하거나 유사한 여러 페이지(예: PC 버전과 모바일 버전, 또는 같은 상품에 대한 다른 색상/옵션 페이지)가 있을 때, 그중 어떤 페이지가 '원본'인지를 rel="canonical"이라는 특수 태그로 지정했다는 뜻입니다. 구글은 이 태그를 발견하면 '아, 이 페이지들은 중복된 콘텐츠이고, 저쪽이
원본이구나'라고 판단하여 원본 페이지만 색인하고 나머지는 색인에서 제외합니다.
* 판단: 이것은 '오류'라기보다는, 중복 콘텐츠 문제를 피하기 위해 표준 페이지(Canonical Page) 설정을 매우 잘했을 때 나타나는 '정상적인' 결과일 가능성이 높습니다. 다만, 검색에 꼭 노출되어야 할 중요한 페이지가 의도치 않게 대체 페이지로 처리되고 있다면, canonical 태그 설정이 올바른지 검토해야 합니다.3. ‘NOINDEX’ 태그에 의해 제외되었습니다 (1,100개)
* 의미: 웹사이트 관리자가 HTML 코드에 <meta name="robots" content="noindex"> 태그를 직접 추가하여, "이 페이지는 검색 결과에 노출하지 말아달라"고 구글에 명시적으로 요청한 경우입니다.
* 판단: 로그인 페이지, 회원 전용 페이지, 관리자 페이지, 내부 검색 결과처럼 민감하거나 검색 노출 가치가 없는 페이지라면 의도된 설정일 것입니다. 하지만 중요한 정보가 담긴 페이지가 여기에 포함되어 있다면, 해당 페이지의 noindex 태그를 찾아서 제거해야 합니다.4. 액세스 금지(403), 찾을 수 없음(404), 서버 오류(5xx)
* 의미:
* 403 (액세스 금지): 서버가 구글봇의 접근을 "권한 없음" 이유로 거부하고 있습니다. 특정 디렉토리나 파일에 대한 접근 권한 설정이 잘못되었을 수 있습니다.
* 404 (찾을 수 없음): 구글봇이 존재하지 않는 페이지(과거에 삭제되었거나, 링크 주소가 잘못된)에 접근하려고 시도했습니다.
* 5xx (서버 오류): 구글봇이 페이지에 접근하는 순간, 웹사이트 서버 자체에서 처리 오류가 발생했습니다. 코드나 데이터베이스 문제일 수 있습니다.
* 판단: 이 오류들은 비록 개수는 적지만, 사이트의 신뢰도와 사용자 경험에 직접적인 악영향을 주므로 가장 먼저 해결해야 할 중요한 문제들입니다.향후 해결 방안 제안
가장 많은 비중을 차지하는 '리디렉션'과 '표준 태그' 문제는 현재 설정이 의도된 것인지 확인하는 과정이 우선적으로 필요하며, 4xx/5xx 오류들은 비교적 시급하게 수정하는 것이 좋습니다.
문제의 원인을 좀 더 정확하게 진단하고 실질적인 해결책을 찾기 위해서는 웹사이트가 어떻게 만들어졌는지 아는 것이 중요합니다. 혹시 웹사이트를 어떤 기술 스택(예: Python Flask/Django, Node.js, PHP, WordPress, 혹은 순수 HTML 등)으로 개발하고 운영하고 계신가요?
파일 목록에 app.py가 있는 것으로 보아, Python 기반의 웹 프레임워크(Flask 등)를 사용하고 계실 가능성이 높아 보입니다. 만약 그렇다면, 해당 파일의 소스 코드를 함께 검토하며 URL 처리, 리디렉션 로직, canonical 태그 생성 방식 등을 분석하여 문제의 근본 원인을 찾아낼 수 있습니다.
원하신다면, 웹사이트 기술 스택에 대한 정보를 바탕으로 문제 해결을 위한 구체적인 다음 단계를 함께 진행해 보겠습니다.
현재 짧은 주소를 사용중인데, 나머지 긴 주소에 대해 리디렉션이 너무 많이 일어나는 중이라는 설명이 있었고,
크롤러 자원 낭비를 일으키는 문제이며, 검색 결과가 제대로 반영되는 것에 좋지 않은 영향을 미친다고 하였습니다.
실제 긴 주소 페이지를 읽어보더니
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓ Shell try { Invoke-WebRequest -Uri "https://allcalc.org/board_free2015/39376?l=en&order_type=desc&sort_index=regdate&m=0&menu_srl=61&page=11" -Maximu… │
│ │
│ │
│ │
│ StatusCode : 302 │
│ StatusDescription : Found
302 리디렉션이 실제 발생되고 있음을 확인시켜 주네요.
302 말고 301 이 적당하다고 제안해 주었습니다.
추가로 수차례 대화를 통해 추가 분석을 한 결과, 302가 발생하는 원인이 애드온 때문이라고 진단해 주었습니다.
rhymix 관리자 페이지에 들어가 보니 언제 설치했는지 기억도 나지 않는 "mid 숨기기 애드온" 이 있더라구요.
✦ 네! 드디어 찾았습니다. 전체 코드에서 검색하니 문제의 원인이 되는 핵심 코드가 발견되었습니다.
분석 결과: 'hide_mid' 애드온이 302 리디렉션의 원인
보내주신 검색 결과에서 가장 주목해야 할 부분은 바로 이 파일입니다.
* 파일: /home/xe/addons/hide_mid/hide_mid.addon.php
* 코드: header('location:' . getNotEncodedUrl('', 'document_srl', $this->document_srl));이 코드가 문제인 이유:
이 코드는 mid(게시판 아이디)를 주소에서 숨기고 document_srl(글 번호)만 남기는, 즉 긴 주소를 짧은 주소로 리디렉션하는 역할을 합니다. 이것이 바로 사용자님께서 겪고 계신 현상입니다.
하지만 header() 함수를 사용할 때 리디렉션 종류(영구 또는 임시)를 명시하지 않으면, PHP는 기본적으로 302 임시 리디렉션으로 처리합니다. 이것이 구글 서치 콘솔에서 수많은 '리디렉션' 항목이 잡히는 원인입니다.
해결책: 301 영구 리디렉션으로 코드 수정
이 문제를 해결하려면 해당 코드를 301 영구 리디렉션으로 명확하게 지정해주어야 합니다.
원격 서버에 접속하여 /home/xe/addons/hide_mid/hide_mid.addon.php 파일을 여시고, 아래와 같이 코드를 수정해주세요.
기존 코드:
1 header('location:' . getNotEncodedUrl('', 'document_srl', $this->document_srl));
수정할 코드:
1 header('location:'. getNotEncodedUrl('', 'document_srl', $this->document_srl), true, 301);
차이점은 header() 함수의 마지막에 , true, 301을 추가하여 이것이 '영구적인 이동'임을 명시하는 것입니다.수정 후 예상 효과:
이 수정 사항을 적용하면, 이제 구글봇은 이 리디렉션을 '영구적'인 것으로 인지하게 됩니다. 따라서 점차적으로 긴 파라미터 주소를 크롤링하는 것을 멈추고, 모든 검색엔진의 평판을 짧은 대표 주소로 통합하게 될 것입니다. 서치 콘솔의 '리디렉션' 항목은 시간이 지나면서 점차 줄어들 것입니다.
다른 파일들에서도 location:을 사용하는 부분이 발견되었지만, '리디렉션이 포함된 페이지' 89,080개의 대부분은 이 hide_mid 애드온 하나를 수정하는 것만으로 해결될 가능성이 매우 높습니다.
우선 이 부분을 먼저 수정해 보시는 것을 추천합니다.
조언에 따라 애드온 파일 수정함.
3. 수정 결과는 과연?
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓ Shell try { Invoke-WebRequest -Uri "https://allcalc.org/board_free2015/39376?l=en&order_type=desc&sort_index=regdate&m=0&menu_srl=61&page=11" -Maximu… │
│ │
│ │
│ │
│ StatusCode : 301 │
│ StatusDescription : Moved Permanently │
│ Content : │
│ RawContent : HTTP/1.1 301 Moved Permanently │
│ Transfer-Encoding: chunked │
│ Connection: keep-alive │
│ Content-Type: text/html; charset=UTF-8 │
│ Date: Thu, 18 Dec 2025 08:45:27 GMT │
│ Set-Cookie: lang_type=en; expires=Fri, ... │
일단 페이지 로딩 결과는 301로 적절하게 바뀌었음을 확인했습니다.
다시 구글 서치 콘솔로 들어가서 리디렉션 주소에 대해 "유효성 검사"를 눌러 봤습니다.

이건 바로 안되는군요.
얼마나 걸릴지 모르겟지만... 해결되었기를 기대해 봅니다. 나중에 댓글로 내용 갱신하겠습니다.
4. 소감
데이터가 있고, 그 데이터에 접근할 권한만 주어진다면
AI는 많은 변화를 일으킬 수 있을 것 같습니다.
지금은 읽을 권한도 별로 없고,
수정할 권한도 별로 없지만,
AI가 안정화되면 될수록 많은 부분을 그냥 맡겨버릴 것 같은데
그렇게 되면 우리가 모르는 사이에 세상이 참으로 많이 바뀔 것 같습니다.
Attention is all you need 는 이미 지나갔고,
Access is all you need 가 되지 않을까요?
댓글1
-
세상의모든계산기
기간을 넉넉하게 잡고 봐야 할 듯 싶구요.
기다려 본 결과...
'실패함'이 떴습니다.
잘 된건지 잘 못된 건지 아무 변화가 없는건지... 뭐가 뭔지 모르겠네요.
세상의모든계산기 님의 최근 댓글
- claude AI는 l-c*r^2 을 1-c*r^2 으로 잘못 읽고 표시하고 있습니다. - TI-nspire CAS 계산기에 l-c*r^2 ≥0 을 조건에 추가해 계산해 보아도 결과는 바뀌지 않습니다. 2026 07.20 ⚠️ 경고가 바로 두 번째 방법이 "성공"한 이유와 정확히 연결되어 있습니다. 경고의 의미 "Domain of the result might be larger than the domain of the input"는 CAS가 절댓값(모듈러스)을 계산하는 과정에서 원래 식보다 정의역이 더 넓은 형태로 단순화했다는 뜻입니다. 구체적으로 이 계산은 내부적으로 대략 이런 과정을 거칩니다. $$\left|\frac{er}{e\cdot r}\right| = \sqrt{\left(\frac{er}{e\cdot r}\right)\cdot\overline{\left(\frac{er}{e\cdot r}\right)}}$$ 즉 원래 식(복소수)과 그 켤레복소수를 곱해서 실수부·허수부 제곱합을 만들고, 거기에 다시 제곱근을 씌우는 과정입니다. 이 과정에서 √(x²) → x 또는 √a·√b → √(ab) 같은 규칙들이 쓰이는데, 이런 규칙들은 x가 실수이고 0 이상일 때만 엄밀하게 성립합니다. CAS는 이 조건들을 일일이 다 추적하지 않고 넘어가면서, 원래는 (e≠0, r+l·ω·i ≠ 0 등) 복소수 특유의 좁은 정의역을 가진 식을, r, l, ω가 어떤 실수여도(부호 무관하게) 정의되는 1/√(r²+l²·ω²)라는 더 넓은 정의역의 식으로 바꿔버린 것입니다. CAS는 이 손실을 감지하고 경고를 띄운 것입니다. 이게 왜 조건 대입 성공과 연결되는가 정리하면, 이 경고는 사실상 이런 뜻입니다. "나는 이 결과를 만들면서 원래 식이 가지고 있던 정의역 제약 정보(부호 조건, i 관련 조건 등)를 이미 버렸다." 바로 이 "정의역 정보를 버린" 상태가 이후 con_1 대입을 매끄럽게 만드는 원인입니다. 첫 번째 시도에서는 i가 살아있는 원래 식에 조건을 대입했기 때문에, CAS가 √(1-c·r²)이 실수인지(정의역 조건: 1-c·r² ≥ 0) 계속 추적하려고 했고, 그 정보가 con에 없어서 더 이상 정리를 못 하고 멈췄습니다. 두 번째 시도에서는 절댓값 계산 단계에서 이미 그런 세밀한 정의역 추적을 CAS 스스로 포기(단순화)했기 때문에, 이후 ω에 무리식을 대입해도 "이게 실수가 맞나?" 하는 검증 절차 없이 그냥 대수적으로 치환·정리해 버립니다. 그래서 깔끔하게 √c/√l이 나온 겁니다. 한 줄 요약 절댓값 계산 시 뜬 "정의역이 넓어졌을 수 있다"는 경고는, CAS가 그 순간에 원래 식의 엄밀한 조건(정의역)을 놓쳤다는 신호이고, 바로 그 "조건을 놓친 상태"이기 때문에 뒤에 이어지는 조건식 대입이 막힘없이 진행된 것입니다. 다만 그 대가로, 결과인 1/√(r²+l²·ω²)이나 최종 √c/√l이 원래 회로 조건(i≠0이 되는 경계, 분모가 0이 되는 경우 등)에서는 엄밀히 성립하지 않을 수 있다는 점은 감안하셔야 합니다. 실제 물리적으로는 r, l, c > 0이고 결과도 물리적으로 타당한 형태라 문제없어 보이지만, 수학적 엄밀성 측면에서는 "정의역이 넓어진 근사적 결과"라는 꼬리표가 붙어있는 셈입니다. 2026 07.20 Claude AI 답변 TI-Nspire CAS의 | (such that / 조건대입) 연산자는 대입 시점의 수식 형태를 그대로 두고 기호만 치환하는 연산입니다. 대입 후에 처음부터 다시 "실수부/허수부 분리, 유리화" 같은 재간소화를 자동으로 수행하지 않습니다. 이 차이가 지금 보신 결과 차이의 핵심입니다. 첫 번째 경우 (|er/(e·r)| | con_1 and con → 실패) 이 시점의 식은 아직 r + l·ω·i 형태의 복소수 그대로입니다 (i가 살아있음). 여기에 con_1: ω = √(1-c·r²)/(√c·l)을 대입하면, 분모 안에 i · √(1-c·r²) 라는 항이 새로 생깁니다. 문제는 CAS가 √(1-c·r²)이 실수인지(즉 1-c·r² ≥ 0인지) 판단할 근거가 없다는 겁니다. 저장해 두신 con 조건은 c>0, l>0, r>0뿐이고, 1-c·r²≥0이라는 조건은 포함되어 있지 않습니다. 그래서 CAS는 i와 이 무리식을 더 정리(유리화, 실수부·허수부 재결합)하지 못하고 있는 그대로 남겨둡니다. 결과에 여전히 i가 보이는 이유입니다. 두 번째 경우 (결과값 1/√(r²+l²·ω²)에 대입 → 성공) |er/(e·r)| (절댓값/모듈러스) 연산은 그 자체로 이미 "복소수 → 실수" 변환을 완료한 결과입니다. 즉 1/√(r²+l²·ω²)에는 더 이상 i가 없고, 순수하게 r, l, ω로만 이루어진 실수식입니다. 이 식에 ω = con_1을 대입하는 것은 그냥 실수 대수식에 실수 대입하는 것이므로, i와 무리식이 뒤엉키는 문제 자체가 발생하지 않습니다. 그래서 바로 깔끔하게 √c/√l로 정리됩니다. 정리하면 절댓값(모듈러스) 계산은 "이 값들이 실수다"라는 가정을 이미 내부적으로 써서 i를 제거하는 연산입니다. 그 연산을 조건 대입 이전에 해두면, 이후 대입은 단순 실수 대입이라 문제없이 정리됩니다. 반대로 i가 남아있는 식에 무리식을 포함한 조건을 먼저 대입하면, 그 무리식의 실수성/부호에 대한 가정이 없어서 CAS가 i를 소거하는 재간소화를 못 하고 멈춰버립니다. 실용적 팁: 복소식에 조건을 대입해야 할 때는 가능하면 절댓값·실수화(유리화) 등을 먼저 끝내서 i를 없앤 뒤 조건을 대입하거나, 대입 후 결과에 다시 simplify/expand/combine 같은 명령을 한 번 더 걸어주면 (필요한 도메인 조건과 함께) 정리가 되는 경우가 많습니다. 2026 07.19 저도 어림잡아 추측할 뿐이지 정확한 이유를 알지는 못합니다. 질문하신 사진을 그대로 (Gemini 3.5 Flash / ChatGPT / Claude Sonnet 5) AI에 넣어 보니 claude AI 가 제일 합리적인 답변을 주어서 이를 붙여 넣습니다. 2026 07.19 아 그렇네요. 감사합니다. ^^ 2026 04.28