지식 Profitserver 서비스를 사용하기 위한 간단한 지침
본관 지식 .htaccess 파일 구성

.htaccess 파일 구성


이 글에서는 SEO를 강화하는 데 중요한 .htaccess 파일을 사용하는 기본 원칙을 살펴보겠습니다. 이 파일은 검색 엔진에서 페이지를 적절하게 인덱싱하도록 보장합니다. 리디렉션을 관리하고, 보안을 구성하고, 성능을 높이는 방법을 알아봅니다. 또한 이 파일을 독립적으로 구성하는 방법에 대한 팁을 제공합니다.

.htaccess가 필요한 이유

.htaccess 파일은 Apache 서버에서 웹 개발자를 위한 일종의 "원격 제어" 역할을 합니다. 다양한 매개변수를 조정하고 웹사이트의 동작을 관리하는 데 편리한 도구를 제공합니다. 서버의 주요 구성 파일에 직접 액세스할 수 없는 경우(예: 가상 호스팅의 경우 종종 그런 경우) .htaccess는 필요한 변경을 하는 데 유용한 도구가 됩니다.

.htaccess 파일은 일반적으로 사이트의 루트 폴더 또는 특별한 설정이 필요한 폴더에 있습니다. 예를 들어 WordPress를 사용하는 경우 Yoast SEO 플러그인을 통해 설정을 할 수 있으며, 이는 robots.txt 설정 관련 글에서 설명했습니다 . 다른 경우에는 해당 폴더로 이동하여 기존의 .htaccess 파일을 편집하거나, 파일이 없다면 새로 생성하면 됩니다.

.htaccess 파일 구성

301 리다이렉트 htaccess

.htaccess 파일의 301 리디렉션은 웹사이트의 영구 리디렉션에 비유할 수 있습니다. 검색 엔진과 브라우저에 페이지가 이제 영구적으로 새 주소에 위치한다는 것을 알리고 북마크와 인덱싱을 업데이트할 것을 제안합니다. 이러한 리디렉션은 일반적으로 페이지가 이동되거나 삭제되어 검색 결과에서 순위를 유지하고 방문자를 새 위치로 리디렉션할 때 사용됩니다.

리디렉션을 활성화하려면 .htaccess 파일에서 해당 명령을 활성화해야 합니다.

RewriteEngine on

그 후, 가장 간단한 형태의 리디렉션을 구성할 수 있습니다.

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

RedirectPermanent 지시문을 사용한 유사한 리디렉션은 다음과 같습니다.

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

이것들은 설정하기 가장 쉬운 리디렉션 방법입니다. 이제 mod_rewrite 모듈을 사용하여 다른 고급 리디렉션 유형을 사용하는 구성을 살펴보겠습니다.

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

임시 재배치를 나타내는 302 리다이렉트 .htaccess는 훨씬 덜 자주 발생합니다. 다음은 이러한 설정의 예입니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

지시어 ErrorDocument

이 설정을 사용하면 사이트에서 HTTP 오류가 발생할 때 사용자에게 표시되는 내용을 제어할 수 있습니다. 표준 오류 메시지 대신, 방문자에게 더 많은 정보를 제공하고 무슨 일이 일어났는지 이해하는 데 도움이 되는 자체 페이지를 표시할 수 있습니다. 다음 구문을 따르기만 하면 됩니다.

ErrorDocument <error_code> <URL_page>

예를 들어,

ErrorDocument 404 /errors/not_found.html

이는 404 오류가 발생할 경우 /errors/not_found.html 페이지가 열린다는 의미입니다 . 절대 URL도 비슷한 방식으로 지정합니다.

ErrorDocument 500 http://example.com/errors/server_error.html

이 예시는 500 오류가 발생했을 때 http://example.com/errors/ 주소에 server_error.html 페이지 가 표시되는 방식을 보여줍니다.

사이트 디렉토리에 대한 액세스 거부

.htaccess 파일에는 '모든 접근 차단(Deny from all)' 명령어가 있는데 , 이를 통해 웹 서버의 특정 폴더나 파일에 대한 접근을 차단할 수 있습니다. 이는 개인 정보나 중요한 파일을 사이트 방문자에게 숨겨 데이터 보안을 강화하려는 경우에 유용합니다.

목록(사용 가능한 모든 디렉토리 보기)을 비활성화하려면 다음 줄을 추가해야 합니다.

Options -Indexes

특정 디렉토리에 대한 액세스를 차단하는 예는 다음과 같습니다.

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

마찬가지로 단일 파일에 대한 액세스를 거부할 수 있습니다.

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

또는 확장자에 따른 다양한 파일의 경우:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

IP로 접근 차단

.htaccess 파일에서 IP로 접근 차단은 특정 IP 주소나 그룹에 대한 웹사이트 접근을 제한할 수 있는 방법입니다. 특정 사람이나 원치 않는 봇이 사이트나 특정 부분에 접근하는 것을 방지하려는 경우 유용할 수 있습니다.

단일 IP 주소를 차단하려면 다음 명령을 사용합니다.

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

여러 IP 주소를 차단하는 방법은 간단합니다. " Deny from " 줄에 필요한 주소를 입력하여 복제하면 됩니다.

다양한 IP 주소를 차단하려면:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

특정 IP에만 액세스를 허용하려면 다음 코드를 추가하세요.

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

완전한 접근 차단을 위해서는 Deny from all 지시문을 사용하고 , 마스크로 주소를 차단하려면 Deny from 11.22를 지정하십시오.

여기서 11.22 는 IP 주소 마스크 입니다.

사용자 에이전트별 방문자 차단

.htaccess 파일에서 User-Agent로 사용자를 차단하는 것은 방문자가 사용하는 브라우저에 대한 정보를 기반으로 웹 서버에 액세스할 수 있는 사람을 제어하는 ​​방법입니다. User-Agent 문자열에는 사람이 서버와 상호 작용하는 데 사용하는 브라우저에 대한 데이터가 포함되어 있으며, 이 정보 덕분에 특정 사용자의 액세스를 제한할 수 있습니다.

사용자 에이전트를 기준으로 차단하는 가장 일반적인 방법은 mod_rewrite를 사용하는 것입니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

이 예에서 :

  1. RewriteCond %{HTTP_USER_AGENT}는 사용자 에이전트 문자열을 확인하는 데 사용됩니다.
  2. ^Bot1, ^Bot2, ^Bot3은 차단하려는 User-Agent 문자열의 예입니다. NC 수정자는 비교가 대소문자를 구분하지 않아야 함을 나타냅니다.
  3. RewriteRule ^.*$ - [F,L]은 RewriteCond 조건 중 하나라도 충족되면 요청에 적용됩니다. 403 Forbidden 상태 코드(F)가 포함된 응답을 보내고 규칙(L) 처리를 중지합니다.

htaccess에서 캐싱하기

.htaccess 파일을 통해 캐싱을 구성하면 사용자에게 더 빠르게 로드되어 사이트 속도가 향상됩니다. 작동 방식은 다음과 같습니다. 이미지, CSS 스타일, JavaScript 스크립트와 같은 특정 파일은 첫 번째 로드 후 사용자의 브라우저 캐시에 저장됩니다. 이제 브라우저는 사용자가 페이지를 방문할 때마다 서버에서 다시 로드하는 대신 캐시에서 이러한 파일을 사용할 수 있습니다. 이렇게 하면 로딩 시간이 단축되고 사이트 성능이 향상됩니다.

예를 들어보자:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

반면, 자주 업데이트되는 리소스의 경우 캐싱을 비활성화해야 합니다.

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

사이트 성능 최적화

Apache의 mod_deflate 및 mod_gzip 모듈은 서버가 사용자 기기로 전송하는 정보를 압축하는 데 도움을 줍니다. 이를 통해 파일 크기가 줄어들어 페이지 로딩 속도 향상됩니다. 하지만 이러한 모듈의 지원 및 구성은 서버 환경에 따라 다를 수 있다는 점을 유념해야 합니다.

mod_deflate 모듈 사용 예시 :

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

mod_gzip 의 예시 :

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

가장 일반적으로 사용되는 지시어에 대해 논의했습니다. 파일의 모든 기능은 공식 문서를 통해 자세히 알아볼 수 있습니다.

.htaccess 파일의 기능을 확인하는 방법

사이트에서 .htaccess 파일이 작동하는지 확인하려면 다음 단계를 수행하세요.

  1. 의도적으로 .htaccess 파일을 오류로 변경합니다. 이에 대한 응답으로 서버는 오류를 제공해야 합니다. 이 방법은 파일의 작업이 일반적으로 서버에 적용되는지 여부를 보여줍니다.
  2. 변경한 특정 사항의 기능을 확인합니다. 예를 들어, 매개변수 중 하나를 약간 조정하고 변경 사항이 있는지 평가합니다.
  3. 변경 사항이 서버의 응답과 관련이 있는 경우 페이지의 상태 코드를 확인하세요. 이를 수행하는 방법은 이전에 문서에서 설명했습니다. HTTP 오류 코드: 서버 오류의 전체 목록.
  4. 서버 로그를 참조하세요. .htaccess 파일 작동과 관련된 모든 오류가 표시됩니다.
  5. 온라인 서비스나 도구를 사용하여 테스트를 실시합니다.

.htaccess 파일의 기능을 확인하려면 모든 단계를 한꺼번에 수행할 필요가 없다는 것을 이해하는 것이 중요합니다. 목록에서 가장 적합한 방법을 선택하여 사용하면 됩니다.

맺음말

.htaccess 파일을 구성하는 것은 Apache 서버를 최적화하고 보호하는 데 중요한 단계입니다. 이 파일이 리디렉션을 관리하고, 콘텐츠를 압축하고, 보안을 보장하는 데 어떻게 도움이 되는지 살펴보았습니다. .htaccess 작업을 마스터하면 웹사이트의 성능과 기능을 개선하는 강력한 도구를 얻게 됩니다.

❮ 이전 기사 Linux에서 웹 서버(Apache-PHP-MySQL/MariaDB)를 구성하는 방법
다음 기사 ❯ FTP 서버 설정

VPS에 대해 문의하세요

저희는 언제든지 여러분의 질문에 답변할 준비가 되어 있습니다.