도메인 주소에서 www 없애기

액세스 컨트롤 에러

웹사이트에서 XMLHttpRequest를 이용한 ajax 요청을 보낼 때, 현재 웹사이트의 도메인과 ajax 요청을 보낼 웹사이트의 도메인이 다른 경우 브라우저 차원에서 보안을 위해 다음과 같은 액세스 컨트롤 에러를 발생시킨다.

XMLHttpRequest cannot load http://www.example.co.kr/wp/wp-admin/admin-ajax.php?action=get_portfolio_item_action&postid=178.
Origin http://example.co.kr is not allowed by Access-Control-Allow-Origin.

위 예시와 같이 상위 도메인이 같더라도, 서브도메인만 달라지면 액세스 컨트롤 에러가 발생한다. 따라서 웹사이트가 www.example.co.kr 로 접속하거나 example.co.kr로 접속했을때 동일한 페이지를 보여준다고 해도 엄연히 다른 사이트에 접속한것으로 웹브라우저가 인식한다.

따라서 위와같이 동일사이트에 접속했다고 생각했음에도 불구하고, 생각치 않게 액세스 컨트롤 에러가 발생하는 실수를 할 수 있기 때문에, 이러한 실수를 막으려면 둘중에 하나의 도메인으로 통일해서 강제 redirection을 걸어놓는 것이 좋다.

리디렉션 설정

웹서버 자체 설정에서 alias를 만들거나 .htcaccess 파일에 RewriteRule을 통해 www.example.co.kr 을 무조건 example.co.kr로 리디렉션 하도록 만들 수 있다.

www.example.com 으로 접속시에 example.com 으로 자동으로 리디렉션을 하기 위해서는 .htaccess 파일에 다음과 같은 조건식을 적어주면 된다.

  • Yu Ra

    안녕하세요. 워드프레스에서 리다이렉션 방법을 찾고있습니다. 저는 aaa.com 에서 http://www.aaa.com 으로 가게하고 싶습니다. 이 포스팅된 글과 반대상황입니다.. 혹시 반대 방법도 알려줄수 있으신가요?ㅠㅠ

    • http://www.letmecompile.com/ YoungJae Kwon

      본문에서 설명한것처럼 www -> non-www의 경우는 .htaccess 파일에 url rewrite를 설정해줘야하지만 non-www -> www로 하고싶으시면 .htaccess파일을 건드릴 필요는 없습니다.
      대신 아파치 virtualhost 설정파일을 찾아서 다음과 같이 설정해주신 후 아파치를 재시작하면됩니다. 우분투의 경우 /etc/apache2/sites-enabled 에 설정파일이 존재하는데 다른 OS의경우 경로는 다를수 있으니 그부분은 검색해보시면 됩니다.

      DocumentRoot “/var/www” // 이부분은 서버상의 실제 file path
      ServerName http://www.aaa.com
      ServerAlias aaa.com http://www.aaa.com

      • Yu Ra

        안녕하세요. 답변 정말 정말 감사합니다. 그런데 제가 알기로는 이 방법은 제가 접근할 수 없는 방법이라고 들은 것 같습니다. 혹시 호스팅 서버에서 하는 일이 아닌가요? 아무래도 제가 전문적인 지식은 없어서요.. 감사합니다.ㅠㅠ