웹사이트 검색

Ubuntu 14.04에서 Apache를 사용하여 www를 www가 아닌 것으로 리디렉션하는 방법


소개

웹 사이트나 응용 프로그램을 도메인 뒤에서 실행하고 있는 경우 사용자가 일반 도메인 이름 www 하위 도메인을 통해 웹 사이트에 액세스하도록 허용하는 것이 종종 바람직합니다. 즉, "www.\를 사용하거나 사용하지 않고 귀하의 도메인을 방문할 수 있어야 합니다. 웹 브라우저에서 접두사(예: example.com 또는 www.example.com)를 사용하면 동일한 콘텐츠가 표시됩니다. 이를 설정하는 방법은 다양하지만 일관성 및 SEO 고려 사항을 위한 최상의 솔루션은 일반 또는 www 중에서 선호하는 도메인을 선택하고 다른 도메인을 선호하는 도메인으로 리디렉션하는 것입니다. 이러한 유형의 리디렉션을 영구 리디렉션 또는 "301 리디렉션\이라고 합니다. , DNS 리소스 레코드 및 웹 서버 소프트웨어를 적절하게 구성하여 쉽게 설정할 수 있습니다.

이 자습서에서는 www URL을 www가 아닌 URL로 리디렉션하는 방법을 보여줍니다. www.example.com에서 example.com으로, Ubuntu 14.04에서 Apache를 사용합니다. 또한 www가 아닌 URL에서 www로 다른 방향으로 리디렉션하는 방법도 보여줍니다. 이 자습서의 CentOS 7 버전은 여기에서 사용할 수 있습니다.

Nginx를 웹 서버로 사용하여 이러한 유형의 리디렉션을 수행하려면 Ubuntu 14.04에서 Nginx를 사용하여 www를 www가 아닌 것으로 리디렉션하는 방법 튜토리얼을 대신 따라야 합니다.

전제 조건

이 자습서에서는 Apache를 실행하는 서버에서 수퍼유저 권한(예: sudo 또는 루트)이 있다고 가정합니다. 해당 설정이 아직 없는 경우 Ubuntu 14.04에서 초기 서버 설정 자습서를 따르십시오.

Apache가 설치되어 있다고 가정합니다. 이 설정이 아직 없는 경우 Apache 태그 아래에 주제에 대한 몇 가지 자습서가 있습니다.

도메인을 관리하는 DNS에 레코드를 추가할 수 있어야 합니다. 아직 도메인이 없는 경우 도메인 등록 기관에서 도메인을 구입하고 등록 기관의 DNS 또는 DigitalOcean DNS로 관리하여 필요한 레코드를 생성할 수 있습니다.

DNS 레코드를 구성하여 시작하겠습니다.

DNS 레코드 구성

www.example.com에서 example.com으로 또는 그 반대로 원하는 리디렉션을 설정하려면 각 이름에 대한 A 레코드가 있어야 합니다.

DNS 관리에 사용하는 모든 항목을 엽니다. 이 예에서는 DigitalOcean DNS를 사용합니다.

도메인(영역이라고도 함) 레코드가 아직 존재하지 않는 경우 지금 새로 만드십시오. 호스트 이름은 도메인이어야 합니다. example.com 및 IP 주소는 Apache 서버의 공개 IP 주소로 설정되어야 합니다. 이렇게 하면 지정한 IP 주소로 도메인을 가리키는 A 레코드가 자동으로 생성됩니다. 다른 시스템을 사용하여 도메인을 관리하는 경우 수동으로 추가해야 할 수 있습니다.

그런 다음 호스트 이름이 "www\인 다른 A 레코드(또는 부분 하위 도메인이 작동하지 않는 경우 "www.example.com\)를 추가하고 동일한 IP 주소를 지정합니다.

두 레코드를 모두 만들었으면 다음과 같아야 합니다.

참고: 정규 이름의 A 레코드가 Apache 웹 서버의 IP 주소를 참조하는 한 CNAME 레코드에서도 작동합니다.

이제 www 및 www가 아닌 도메인을 통해 서버에 액세스할 수 있어야 하지만 여전히 리디렉션을 설정해야 합니다. 지금 그렇게 하겠습니다.

재작성 모듈 활성화

301 리디렉션을 수행하기 위해 Apache mod_rewrite 또는 Rewrite 모듈을 사용합니다. 이렇게 하면 사용자가 www를 사용하거나 사용하지 않고 사이트에 액세스할 수 있습니다. 접두사를 지정하고 원하는 도메인으로 리디렉션됩니다.

먼저 다음 명령으로 mod_rewrite 모듈을 활성화합니다.

  1. sudo a2enmod rewrite

Rewrite 모듈을 활성화하면 .htaccess 파일을 사용하여 리디렉션 규칙으로 Apache를 구성할 수 있습니다.

.htaccess 파일 활성화

편집을 위해 Apache 구성 파일을 엽니다. Ubuntu에서 기본 구성 파일은 /etc/apache2/sites-enabled/000-default.conf에 있으므로 예제에서 이를 사용합니다.

  1. sudo vi /etc/apache2/sites-enabled/000-default.conf

사이트의 DocumentRoot를 찾아 기록해 둡니다. 기본적으로 /var/www/html이므로 예제 구성에서 사용할 것입니다.

다음 디렉터리 지시문을 구성에 추가하고 강조 표시된 부분을 DocumentRoot로 대체해야 합니다.

 <Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
 </Directory>

저장 및 종료.

이제 Apache를 다시 시작하여 변경 사항을 적용하십시오.

  1. sudo service apache2 restart

이제 Apache는 /var/www/html 디렉토리 아래에 있는 .htaccess 파일을 읽도록 구성되었습니다. 이제 다시 쓰기 규칙을 추가해 보겠습니다.

재작성 모듈 구성

앞에서 언급했듯이 .htaccess 파일을 사용하여 Rewrite 모듈을 구성합니다.

디렉토리를 DocumentRoot로 변경합니다. 이 경우에는 /var/www/html입니다.

  1. cd /var/www/html

이제 편집을 위해 .htaccess를 엽니다.

  1. sudo vi .htaccess

물론 이전에 파일을 생성한 적이 없다면 비어 있을 것입니다. 리디렉션할 방향에 따라 다음 옵션 중 하나를 사용합니다.

옵션 1: www를 www가 아닌 것으로 리디렉션

www에서 www가 아닌 일반 도메인으로 사용자를 리디렉션하려면 다음 구성을 삽입합니다.

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

저장 및 종료. 변경 사항은 즉시 적용됩니다. HTTPS를 사용하는 경우 RewriteRule 줄의 "http\를 "https\로 업데이트해야 합니다.

이 curl 명령을 사용하여 www가 아닌 도메인이 www 도메인으로 리디렉션되도록 합니다(강조 표시된 부분을 실제 도메인으로 대체).

curl -I http://www.example.com

다음과 같이 www가 아닌 리디렉션 위치를 보여주는 301 Moved Permanently 응답을 받아야 합니다.

Output:
HTTP/1.1 301 Moved Permanently Date: Fri, 01 May 2015 21:18:33 GMT Server: Apache/2.4.7 (Ubuntu) Location: http://example.com/ Content-Type: text/html; charset=iso-8859-1

물론 확실히 하려면 웹 브라우저(www 및 www가 아닌 브라우저)에서 도메인에 액세스해야 합니다.

옵션 2: www가 아닌 www를 www로 리디렉션

www가 아닌 일반 도메인에서 www 도메인으로 사용자를 리디렉션하려면 다음 구성을 삽입합니다.

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

저장 및 종료. 변경 사항은 즉시 적용됩니다. HTTPS를 사용하는 경우 RewriteRule 줄의 "http\를 "https\로 업데이트해야 합니다.

이 curl 명령을 사용하여 www가 아닌 도메인이 www 도메인으로 리디렉션되도록 합니다(강조 표시된 부분을 실제 도메인으로 교체).

curl -I http://example.com

다음과 같이 www 리디렉션 위치를 표시하는 301 Moved Permanently 응답을 받아야 합니다.

Output:
HTTP/1.1 301 Moved Permanently Date: Fri, 01 May 2015 21:18:33 GMT Server: Apache/2.4.7 (Ubuntu) Location: http://www.example.com/ Content-Type: text/html; charset=iso-8859-1

물론 확실히 하려면 웹 브라우저(www 및 www가 아닌 브라우저)에서 도메인에 액세스해야 합니다.

결론

그게 다야! 이제 Apache 리디렉션이 올바르게 구성되었으며 사용자는 www가 아닌 도메인과 www 도메인을 통해 웹 서버에 액세스할 수 있습니다.

리디렉션을 구현하는 데 사용한 Apache 기능인 mod_rewrite에 대해 자세히 알아보려면 Mod_Rewrite를 설정하는 방법 자습서를 읽어보십시오.