.htaccess 파일이란 무엇이며 WordPress에서 어떻게 사용합니까?

게시 됨: 2020-10-27

이전에 .htaccess 파일에 대해 들어본 적이 있을 수 있지만 이것이 무엇인지 또는 어떤 역할을 하는지는 알지 못했습니다. 이 기사에서 우리는 .htaccess 파일에 대해 집중 조명하고 그 비밀을 완전히 드러낼 것입니다. 이 기사가 끝나면 .htaccess 파일이 무엇인지, .htaccess 파일이 하는 일과 .htaccess 파일을 사용하여 특정 작업을 수행하는 방법을 이해하게 될 것입니다. 가자!

.htaccess 파일이란 무엇입니까?

.htaccess 파일이 무엇인지 정확히 살펴보는 것으로 시작하겠습니다. 'htaccess'는 '하이퍼텍스트 액세스'를 의미합니다. 이 이름은 파일이 처음 개발되었을 때 사용된 용도를 설명합니다. 간단히 말해서 특정 파일 및 디렉토리에 대한 사용자 액세스를 제어하는 ​​데 사용되었습니다. .htaccess가 처음 등장한 이후로 상황이 바뀌었고 이제 WordPress에서 다양한 방식으로 사용되며 이에 대해 자세히 살펴보겠습니다.

.htaccess는 Apache 웹 서버(Apache는 웹 서버에서 일반적으로 사용되는 소프트웨어)의 특정 설정을 재정의하거나 웹사이트 작동 방식에 영향을 미치는 다양한 기타 기능을 구현하는 데 사용되는 구성 WordPress 코어 파일입니다. 영구 링크를 활성화한 직후 모든 WordPress 설치에 포함되며 일반적으로 설치의 루트 디렉토리에 있습니다. FileZilla 또는 WinSCP와 같은 FTP 클라이언트를 통해 설치 파일에 액세스하여 파일을 보거나 편집할 수 있습니다.

참고: FTP 클라이언트의 기본 설정이 숨겨진 파일이 표시되도록 수정되었는지 확인하십시오.

기본적으로 WordPress 웹사이트의 .htaccess 파일 내용은 퍼머링크가 활성화되면 다음과 같습니다.

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

모르는 경우를 대비하여 줄의 시작 부분에 있는 "#"은 주석입니다. # BEGIN WordPress# END WordPress 주석 행은 나중에 플러그인이나 사용자가 더 많은 규칙을 적용할 때 콘텐츠가 정리된 상태로 유지되도록 사용됩니다. .htaccess 파일에 대한 향후 추가 사항은 이 줄 외부에 배치해야 합니다.

.htaccess 파일은 주로 WordPress에서 웹사이트의 영구 링크를 제어하는 ​​데 사용됩니다. 또한 특정 파일에 대한 액세스 제어, 보안 및 성능 향상, 사용자 정의 헤더 전송 등과 같은 다양한 다른 작업을 위한 강력한 도구로 사용할 수도 있습니다.

참고: 웹사이트의 .htaccess 파일에 대한 변경 사항은 신중하게 수행하는 것이 중요합니다. 이 파일에 간단한 오타가 있어도 웹사이트가 충돌할 수 있습니다. 따라서 변경 사항에 대해 확신이 서지 않는 경우 라이브 웹 사이트에 적용하기 전에 스테이징 서버에서 이러한 변경 사항을 이상적으로 테스트해야 합니다.

.htaccess 파일로 할 수 있는 일

이제 .htaccess 파일을 사용하여 웹사이트를 더 잘 제어할 수 있는 방법을 살펴보겠습니다.

'www'와 'www가 아닌' 사이의 리디렉션

.htaccess 파일의 일반적인 용도는 "네이키드 도메인"(www가 아닌 ​​버전)에서 www 버전 또는 그 반대로 영구 리디렉션을 설정하는 것입니다.

계속하기 전에 DNS에 두 도메인이 모두 올바른 서버의 IP 주소로 확인되도록 설정되어 있는지 확인하십시오.

또한 WordPress 관리 영역에서 네이키드 도메인이 기본으로 설정되어 있는지 확인합니다.

설정 사이트 URL

기본 콘텐츠 아래의 .htaccess 파일에 다음 코드를 추가하여 www 도메인을 기본 도메인으로 리디렉션할 수 있습니다.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

정확히 반대(www가 기본으로 설정된 경우)를 수행하고 'www가 아닌' 도메인에서 'www'로 리디렉션하려면 다음 코드를 삽입해야 합니다.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

코드에 사용된 정규식에 익숙하지 않고 구문에 대해 더 알고 싶다면 시간을 내어 REGEX에 대해 자세히 읽어보십시오. HT Access Cheat Sheet는 또 다른 매우 유용한 도구입니다.

301 리디렉션(영구 리디렉션)

301 리디렉션은 URL이 다른 URL로 영구적으로 교체되었음을 검색 엔진에 알리고 사용자를 해당 방문자에게 새로운(올바른!) URL로 리디렉션합니다. .

다음은 .htaccess 파일에 배치할 때 트릭을 수행하는 코드입니다.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

위의 예에서는 'mycompanyname.com' 웹사이트에서 'example.com'으로 사용자를 리디렉션했습니다. 물론 이 섹션을 자신의 URL로 바꾸고 싶을 것입니다.

이는 도메인 아래의 모든 경로에도 적용됩니다. 이는 예를 들어 mycompanyname.com/new.html이 example.com/new.html로 리디렉션됨을 의미합니다.

302 리디렉션(임시 리디렉션)

콘텐츠가 일시적으로 다른 위치로 이동되면 302 리디렉션이 사용됩니다. 구문은 301과 동일합니다. 예를 들면 다음과 같습니다.

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

실용적인 관점에서 결과는 정확히 동일하지만 한 가지 중요한 차이점이 있습니다. 301 리디렉션을 사용하면 검색 엔진에 페이지가 더 이상 라이브 상태가 아니라는 메시지가 표시되고 그렇게 하면 검색 엔진이 검색 결과에서 이 페이지를 삭제하도록 권장합니다. 302 리디렉션의 경우 원래 URL은 계속 크롤링되며 Google은 새 URL 대신 계속 색인을 생성합니다. 따라서 임시로 대체 콘텐츠로만 리디렉션하려는 경우 리디렉션을 위한 이상적인 솔루션입니다.

HTTPS로 강제 실행

SSL 인증서로 웹사이트를 보호하는 것은 요즘 매우 중요합니다. 이렇게 하지 않는 웹사이트는 이제 브라우저 표시줄에 경고를 표시하여 웹사이트에 대한 신뢰를 훼손할 수 있습니다. 또한 Google은 실제로 HTTPS를 통해 콘텐츠를 제공하지 않는 웹사이트에 불이익을 주기 때문에 검색 순위가 떨어질 수 있습니다.

웹 사이트에 SSL 인증서를 설치하더라도 사용자가 HTTPS가 아닌 버전의 사이트를 방문할 수 있음을 알 수 있습니다. 이렇게 하면 SSL 인증서가 설치되어 있음에도 불구하고 브라우저에서 여전히 경고를 받게 됩니다. 이러한 일이 발생하지 않도록 하려면 비보안 HTTP 버전에서 보안 HTTPS 버전으로의 모든 트래픽을 강제 실행해야 합니다. 다음 코드를 추가하면 .htaccess 파일을 사용하여 매우 쉽게 수행할 수 있습니다.

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

IP 주소 차단

스팸 트래픽을 수신하거나 웹사이트가 특정 IP 주소에서 남용/해킹 시도를 받고 있는 경우 .htaccess 파일에서 다음 코드를 사용하여 해당 IP 주소에서 오는 트래픽을 차단함으로써 .htaccess 파일을 사용하여 조치를 취할 수 있습니다.

 Deny from 94.66.58.135

다른 방법으로 IP 주소를 차단하는 방법을 알고 싶다면 이 가이드를 읽으십시오.

이미지 핫링크 방지

이미지 핫링크는 누군가가 귀하의 웹사이트에 있는 이미지를 자신의 이미지에 삽입하는 것입니다. 이것은 귀하의 서버가 다른 사람의 웹사이트에 이미지를 제공하기 위해 잠재적으로 초과 근무해야 한다는 것을 의미하므로 저작권의 관점에서만이 아니라 문제가 될 수 있습니다. .htaccess 파일을 사용하여 다음 코드를 사용하여 다른 사람이 웹사이트에 귀하의 이미지를 삽입하지 못하도록 차단하면 이를 중지할 수 있습니다.

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

'mycompanyname.com'을 웹사이트의 URL로 바꾸는 것을 잊지 마십시오!

이 코드는 사이트의 이미지를 핫링크하는 모든 웹사이트를 차단합니다. 검색 엔진이 이미지를 핫링크하는 것을 중지하고 싶지 않기 때문에 이러한 이미지를 수동으로 화이트리스트에 추가해야 합니다. 이를 달성하는 코드 섹션은 다음과 같습니다.

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

물론 화이트리스트에 추가하려는 다른 웹사이트를 포함할 수 있습니다. 마지막으로 코드의 마지막 줄( RewriteRule .(jpg|jpeg|png|gif)$ - [F] )은 차단되는 미디어 유형을 나타냅니다.

플러그인 및 테마 파일 보호

플러그인 및 테마 PHP 파일은 때때로 악성 코드를 삽입하려는 해커의 표적이 될 수 있습니다. .htaccess 파일을 사용하면 다음 코드를 사용하여 이러한 파일에 대한 액세스를 방지할 수 있습니다.

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

WordPress 핵심 파일 보호

일부 WordPress 핵심 파일은 관리자가 아닌 사용자가 액세스할 수 없도록 만드는 것이 좋습니다. 이것은 대부분의 호스팅 제공업체가 귀하를 대신해 처리하는 사항이지만 항상 그런 것은 아닙니다. 민감한 WordPress 파일에 대한 액세스를 방지하려면 .htaccess 파일에서 다음 코드를 사용할 수 있습니다.

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

나쁜 봇이 웹사이트를 크롤링하는 것을 방지

봇은 기본적으로 하루에 수백만 개의 웹사이트를 스캔할 수 있는 자동화된 웹 스크립트입니다. Google은 봇을 사용하여 웹사이트를 스캔하고 이러한 스캔의 데이터를 가져와 방대한 검색 데이터베이스를 업데이트합니다. 바라건대 Google 봇은 완전히 무해합니다! 웹 사이트를 스캔하고 싶지 않은 다른 봇이 있습니다. 이러한 '나쁜' 봇 중 일부는 불필요한 서버 대역폭을 소모하는 것 외에는 아무 것도 하지 않는 반면 다른 봇은 웹사이트에서 악용 가능한 약점을 적극적으로 검색할 수 있습니다. .htaccess 파일을 사용하여 이러한 '나쁜' 봇을 차단할 수 있습니다.

가장 먼저 확인해야 할 것은 차단하려는 봇이 무엇입니까? 이미 알고 있을 수도 있지만 그렇지 않은 경우 의심스러운 것으로 간주되는 블랙리스트 봇의 업데이트된 목록을 확인할 수 있습니다. 목록이 있으면 다음과 같이 .htaccess 파일에 추가할 수 있습니다.

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

변경 사항을 저장하면 목록에 있는 모든 봇이 현재 웹 사이트를 방문하면 403 금지 페이지가 표시됩니다.

wp-config.php 보호

일반적으로 wp-config.php 파일에는 데이터베이스 액세스 자격 증명이 포함되어 있으므로 액세스를 제한하는 것이 좋습니다.

.htaccess를 통해 이 작업을 수행하려면 다음 줄을 복사하여 .htaccess 파일에 붙여넣습니다.

 <files wp-config.php>order allow,denydeny from all</files>

PHP 실행 비활성화

해킹 시도로부터 보호하는 매우 효율적인 방법은 필요하지 않은 특정 디렉토리에서 PHP가 실행되는 것을 방지하는 것입니다. 예를 들어 /wp-includes//wp-content/uploads/ 디렉토리는 서버에 대한 무단 액세스(백도어 파일이라고 함)를 허용하는 코드를 배치하기 위해 해커가 사용하는 인기 있는 위치입니다. 이 디렉토리에서 PHP 실행을 비활성화하면 해당 파일이 지워지지 않고 대신 코드 실행이 중지됩니다. 이렇게 하려면 .htaccess 파일에 다음 코드를 추가합니다.

 <Files *.php>deny from all</Files>

또한 Pressidium을 포함한 많은 호스팅 제공업체는 고객의 보안 수준을 향상시키기 위해 이미 기본적으로 이러한 디렉토리에서 PHP 실행을 비활성화하고 있음을 알 수 있습니다.

XML-RPC 액세스 비활성화

WordPress 설치가 단일 또는 여러 IP 주소로부터의 공격과 관련된 수천 개의 "POST /xmlrpc.php HTTP/1.1" 요청을 수신하는 호스팅 회사의 지원 팀에서 흔히 볼 수 있는 일반적인 문제입니다. 이에 대한 한 가지 해결책은 XML-RPC를 비활성화하는 것입니다.

웹사이트에서 XML-RPC를 비활성화하려면 다음 코드 줄을 oyur .htaccess 파일에 추가합니다.

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

모바일 앱이나 원격 연결을 사용하여 콘텐츠를 업데이트하는 경우 xmlrpc.php가 필요하다는 점은 주목할 가치가 있습니다. 따라서 영구적으로 비활성화하려는 경우 작업에 필요하지 않은지 확인하십시오.

강제로 파일 다운로드

웹 사이트 사용자로서 웹 사이트에서 파일(예: PDF)을 다운로드하려고 할 때 대신 브라우저 창에서 파일이 열리는 것은 매우 성가실 수 있습니다. 웹사이트에 사용자에게 다운로드 가능한 항목으로 제공되는 파일이 있는 경우 .htaccess 파일을 편집하고 특정 파일 형식을 강제로 다운로드하고 브라우저 내에서 직접 표시하지 않도록 할 수 있는 코드 줄을 추가할 수 있습니다. 사용자가 직접 다운로드할 수 있도록 하려는 파일 형식의 몇 가지 예와 함께 이 코드가 아래에 표시됩니다.

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

사용자 정의 HTTP 헤더 보내기

고급 사용자는 Apache의 Header 지시문을 활용하여 고객 HTTP 헤더를 보낼 수 있기를 원할 수 있습니다. 이렇게 하려면 .htaccess 파일에 다음 코드를 추가합니다.

 Header add my-custom-header "my custom header value"

위의 예는 Apache에 서버에 대한 모든 요청에 ​​대해 "my-custom-header"라는 헤더를 추가하도록 지시합니다. 이 업데이트를 구현한 다음 브라우저 도구에서 네트워크 탭을 확인하면 아래와 같이 응답을 확인할 수 있습니다.

내 사용자 정의 헤더

이 기술은 캐시 및 보안 헤더를 추가하거나 언어 문자 집합을 추가하는 데 매우 일반적입니다. 이 기사에서 몇 가지 인기 있는 용도를 살펴보세요. 이 목록에서 실험할 수 있는 자세한 헤더 목록을 찾을 수도 있습니다.

결론

이 기사가 .htaccess 파일로 얻을 수 있는 것들에 대한 통찰력을 제공했기를 바랍니다. 물론 플러그인을 사용하여 이러한 작업을 대부분 수행할 수 있지만 특히 플러그인이 예상대로 작동하지 않는 경우 '내부'에서 정확히 무슨 일이 일어나고 있는지 이해하는 것이 항상 도움이 됩니다. 플러그인에 의존하지 않고 .htaccess 파일을 편집하는 방법을 마스터하면 WordPress 전문 지식 수준을 높이는 데 도움이 됩니다... 그리고 그것은 항상 좋은 일입니다!