[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



