Web Hosting

[AWS LAMP] 사용하지 않는 URL에 대한 처리 방법 410 vs 404 ( 예시 /.well-known/)

도메인을 구입하고 새로운 사이트를 구축하였다. 하지만 하루에 300번이 넘는 방문 이력이 쌓이고 있다. 이전 도메인 주인의 잔재인 듯 싶다.

301로 리다이렉션 처리 해버리고 싶지만… CHAT GPT가 하지 말라고 한다. 301로 다른 사이트의 고용량 파일로 보내는 건 좋은 방법이 아니라고 한다.

/.well-known/assetlinks.json 이 뭐냐면?

이건 안드로이드 App Links (Digital Asset Links) 검증용 파일입니다.

  • Android 앱이 특정 도메인을 자기 앱과 연결할 때 사용
  • 앱이 실행되거나 링크 검증 시 자동 호출됨
  • 보통 과거 도메인 주인이 앱을 운영했을 가능성 큼

301로 고용량 파일로 보내면 어떻게 되냐?

예를 들어:

/.well-known/assetlinks.json
→ 301 → 다른사이트.com/1GB파일.iso

실제 동작

  • 클라이언트(앱)가 301을 따라감
  • 그 다음 요청은 그 다른 사이트로 감
  • ❗ 당신 서버는 301 응답만 보내므로 트래픽 폭탄은 안 맞음

하지만 문제는

1️⃣ 법적/윤리적 문제

타 사이트로 트래픽을 의도적으로 유도하는 건

  • 악의적 트래픽 유발
  • 서비스 방해로 오해 가능

좋은 선택 아님 ❌


2️⃣ SEO/신뢰도 문제

Google은 .well-known 경로를 민감하게 봄
이상한 301 리다이렉트는 도메인 신뢰도에 악영향 가능


3️⃣ 쓸데없는 리다이렉트 반복

앱은 계속 검증 시도함 → 계속 301 → 의미 없는 트래픽 지속


가장 좋은 방법 (추천 순위)

1순위: 410 Gone 반환 (가장 깔끔함)

/opt/bitnami/apache/htdocs/index.php 파일에 아래 코드를 추가합니다. 제일 위에 넣으세요 (HTML 출력 전에)

“이 리소스는 영구적으로 사라졌습니다” 의미

if ($_SERVER['REQUEST_URI'] === '/.well-known/assetlinks.json') {
http_response_code(410);
exit;
}

👉 봇이나 앱이 점점 재시도 줄임

410(Gone)으로 처리하는 건 기술적으로 깔끔한 방법이고, SEO에도 문제 없음. 오히려 404보다 명확해요.


410 vs 404 차이

코드의미크롤러 반응
404없음 (모를 수도 있음)나중에 다시 시도
410영구 삭제됨재시도 빠르게 중단

👉 410은 “이 파일은 원래 있었지만 이제 영구적으로 없어” 라는 의미
👉 크롤러나 앱이 재요청을 더 빨리 줄임


SEO 안전한가?

네, 안전합니다.

  • .well-known/assetlinks.json검색용 페이지가 아님
  • Google 색인 대상도 아님
  • 순위, 패널티와 무관
  • 410은 Google 공식적으로 정상 상태 코드

오히려 이상한 301 리다이렉트가 더 안 좋습니다.


언제 410이 좋은가?

  • 이전 도메인 주인이 사용하던 리소스
  • 앞으로 절대 사용할 계획 없음
  • 앱 연결 끊고 싶음
  • 반복 요청 줄이고 싶음

지금 상황에 딱 맞는 케이스입니다.


더 좋은 방법 (Apache 레벨에서 처리 — 강력 추천)

PHP까지 오게 하지 말고 Apache에서 바로 410 반환하는 게 더 깔끔합니다.

Bitnami는 보통 여기 설정합니다:

/opt/bitnami/apache/conf/httpd.conf

/opt/bitnami/apache/conf/httpd.conf에 나중에 삭제가 용이하도록 ErrorDocument 바로 아래쪽에 추가하였다.

또는 vhost 파일:

/opt/bitnami/apache/conf/vhosts/your-domain.conf

🔹 설정 추가

Redirect 410 /.well-known/assetlinks.json

그 다음 Apache 재시작:

sudo /opt/bitnami/ctlscript.sh restart apache

👉 이게 가장 효율적
👉 PHP 실행도 안 됨
👉 서버 자원 절약


#존재하지 않는 PHP 직접 차단

작업전에는 항상 해당파일 백업파일 만든 후 작업해야해요. 진짜 중요!!

cp /opt/bitnami/apache/conf/bitnami/bitnami.conf /opt/bitnami/apache/conf/bitnami/bitnami.conf.bak.2026.02.28

#80포트
sudo vi /opt/bitnami/apache/conf/bitnami/bitnami.conf

#443포트
sudo vi /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf

위 파일 제일 상단 부분 “RewriteEngine On” 바로 아래쪽에 접근 차단 조건 추가


#XMLRPC 차단 (워드프레스 안 쓰면)
RewriteRule ^xmlrpc\.php$ - [F,L]

# phpMyAdmin 완전 차단 (사용 안 하면)
RewriteRule ^phpmyadmin - [F,L]
RewriteRule ^pma - [F,L]

#위험한 HTTP 메서드 차단
RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK|DEBUG)
RewriteRule .* - [F,L]

# 존재하지 않는 php 차단 
# /opt/bitnami/apache/conf/httpd.conf에서 404 처리했다면 여기서는 안해도 됨
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule \.php$ - [R=404,L]
RewriteCond %{DOCUMENT_ROOT}/$1 !-f
RewriteRule ^(.+\.php)$ - [R=404,L]

#기본 공격 패턴 필터
RewriteCond %{QUERY_STRING} (\.\./|\<|%3C|union|select|base64_) [NC]
RewriteRule .* - [F]

bitnami-ssl.conf를 vi에디터로 열고 작업후 저장하려고 보니 readonly 뜨면서 저장이 안되길래

w! 해서 저장은 되었지만 파일 내용이 전부 사라짐

만약 bitnami 소유라면?

보안상 권장되지 않음.
수정:

sudo chown root:root /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf
sudo chmod 644 /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf

sudo chown root:root /opt/bitnami/apache/conf/bitnami/bitnami.conf
sudo chmod 644 /opt/bitnami/apache/conf/bitnami/bitnami.conf

아파치 상태 확인

sudo /opt/bitnami/ctlscript.sh status

변경 후엔 아파치 재시작

sudo /opt/bitnami/ctlscript.sh restart apache

Hi, I’m 관리자