해당URL를 찾을 수 없습니다. 관련 문의 드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
해당URL를 찾을 수 없습니다. 관련 문의 드립니다.

QA

해당URL를 찾을 수 없습니다. 관련 문의 드립니다.

본문

문의 요점

http://aaa.abc.com  (80포트)접속시 -> https://aaa.abc.om 으로 보냄 (현재는 잘 서비스되는 상태임)

여기서 https://www.abc.com/aaa/  하위 디렉토리로 홈피서비스를 하고자 할 경우 아래와 같이 

설정한 상태 입니다.  이럴경우 페이지는 모두 정상적인데...

로그인시  "www.abc.com 내용: url에 타 도메인을 지정할 수 없습니다." 메세지 출력되며, 더이상 진행이 되지않습니다. 해결방안을 찾고자 문의드립니다.

 

a. 세션쪽이 의심이라 로그인, 글쓰기페이지 등 수정을 봐야 하는것인지?

b. 아니면 서버 설정이 문제인지?

c. 이것도 아니면 아랫글문의 처럼 소스상에서 https로 접근시킨다면 아파치 서버 설정은어떻게 구성을 해야하는지?

https://sir.kr/qa/528410?stx=ssl+https&sst=wr_num&sop=and&unanswered=0&unadopted=0&adopted=0&s_tag=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C5

 

조언을 부탁드려봅니다.

 

현재 웹서버 설정상황은 

1차도메인 www.abc.com (타서버)

2차도메인을 받아서 설정도메인 예) aaa.abc.com (현재 서비스되는 웹서버)

 

디렉토리 서비스가 타서버에서 세팅된것이고(1차 도메인)
타서버에 네임서버 설정에서 이쪽(2차도메인) 넘겨준는 구조로 1차, 2차 서버는 각기 다른 서버주소 입니다.

타서버 www.abc.com/aaa/  <--aaa가 현재 서비스되는 aaa.abc.com 으로 연결되는 서비스를 하고자 합니다.

 

1. httpd-vhosts.conf 설정

<VirtualHost *:80>
    DocumentRoot /home/aaa/public_html
    ServerName aaa.abc.com
    ServerAlias aaa.abc.com
    Redirect / https://aaa.abc.com:443

   ....

</VirtualHost *:80>

 

2. httpd-ssl.conf 설정

<VirtualHost _default_:443>
DocumentRoot /home/aaa/public_html
ServerName aaa.abc.com:443
.....
RewriteEngine On
RewriteCond %{HTTP_HOST} ^aaa.abc.com$ [NC]
RewriteCond %{REQUEST_URI} !^/aaa [NC]
RewriteRule ^(.*)$ https://www.abc.com/aaa [R=301,L]

....
</VirtualHost>
위 와 같이 되어 있습니다.

 

/aaa/홈디렉토리에 config.php 파일 28줄에는 아래와 같이 정정함

define('G5_DOMAIN', 'https://www.abc.com/aaa');
define('G5_HTTPS_DOMAIN', 'https://www.abc.com/aaa');
 

 

이 질문에 댓글 쓰기 :

답변 2

※ 브라우저는 보안상 다른 도메인(혹은 서브도메인)에서 리소스를 요청하는 것을 제한합니다.

로그인 처리를 위한 요청이 https://aaa.abc.com에서 시작되었으나,

리다이렉션이나 URL 경로 설정으로 인해 https://www.abc.com/aaa/로 요청이 전송되면,

이 요청을 동일한 출처가 아니라고 판단하여 요청이 차단되는 것입니다.

 

> 보여주신 설정을 요약하자면, ~

  - 도메인 간 리다이렉션과 PHP 설정의 불일치로 인해 발생하는 문제입니다.

  - 도메인을 통합하거나, 명시적인 CORS 정책과 PHP 세션 설정으로

    문제를 해결할 수 있을 것입니다.

 

> 해결 방안 :

  - aaa.abc.comwww.abc.com/aaa/ 중 하나의 도메인으로 통합

  - config.php의 설정 - aaa.abc.com으로 통합한다면

define('G5_DOMAIN', 'https://aaa.abc.com');
define('G5_HTTPS_DOMAIN', 'https://aaa.abc.com');
// . . .
/*
www.sir.kr 과 sir.kr 도메인은 서로 다른 도메인으로 인식합니다. 쿠키를 공유하려면 .sir.kr 과 같이 입력하세요.
이곳에 입력이 없다면 www 붙은 도메인과 그렇지 않은 도메인은 쿠키를 공유하지 않으므로 로그인이 풀릴 수 있습니다.
*/
define('G5_COOKIE_DOMAIN',  '.aaa.abc.com');
// . . . 

  -  

 

- config.php에 도메인 하위  디렉터리(/aaa)를 지정하지 마세요.

 

. . .

<VirtualHost *:80>
    DocumentRoot /home/aaa/public_html
    ServerName aaa.abc.com
    ServerAlias aaa.abc.com
    Redirect / https://aaa.abc.com
</VirtualHost>

 

<VirtualHost _default_:443>
    DocumentRoot /home/aaa/public_html
    ServerName aaa.abc.com
    ServerAlias aaa.abc.com
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/chainfile.crt
    # CORS 설정 (필요한 경우 추가)
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "https://aaa.abc.com"
        Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
        Header set Access-Control-Allow-Headers "Content-Type, Authorization"
    </IfModule>
    # Rewrite 설정
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^aaa\.abc\.com$ [NC]
    RewriteRule ^(.*)$ https://aaa.abc.com/$1 [R=301,L]
</VirtualHost>

 

= 이 설정은 타 서버(www.abc.com)가

요청을 aaa.abc.com으로 넘기는 방식으로 동작합니다

따라서 www.abc.com/aaa/디렉토리 서비스처럼 보이지만,

실제로는 2차 도메인(aaa.abc.com)에서 서비스되고 있습니다.

적용해본결과 config.php 설정에는 /aaa를 붙여야만 페이지가 정상적으로 보입니다.
상단링크주소는 https://aaa.abc.com//aaa/.....  형태로 '/' 하나 더 붙고, 로그인시
aaa.abc.com 회원아이디나 비밀번호가 공백이면 안됩니다. 라고 출력됩니다.

최종 접속될 주소는 https://www.abc.com/aaa/index.php  이런 형색으로 처리가 되도록 되어야 해서.... 한번더 여쭤봅니다.

기존의 https://aaa.abc.com로 접속된 요청을 https://www.abc.com/aaa/로 리다이렉션하도록 설정하신다는 말씀이신가요?

즉, https://aaa.abc.com는 사용자가 접근하지 않고, 모든 트래픽이 https://www.abc.com/aaa/로 통합되게 하신다는 것인지?

- 서버 설정에서 VirtualHost를 수정

<VirtualHost *:80>
    ServerName aaa.abc.com
    Redirect / https://www.abc.com/aaa/
</VirtualHost>

<VirtualHost _default_:443>
    ServerName aaa.abc.com
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key

    RewriteEngine On
    RewriteRule ^(.*)$ https://www.abc.com/aaa/$1 [R=301,L]
</VirtualHost>


- config.php
// 세션 도메인 설정
ini_set('session.cookie_domain', '.abc.com');

define('G5_DOMAIN', 'https://www.abc.com/aaa');
define('G5_HTTPS_DOMAIN', 'https://www.abc.com/aaa');

// 쿠키 도메인을 .abc.com으로 설정하여 모든 서브도메인에서 쿠키를 공유
define('G5_COOKIE_DOMAIN', '.abc.com');


  - 서버 간 요청이 허용되도록 CORS 정책을 추가
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "https://www.abc.com"
    Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
    Header set Access-Control-Allow-Headers "Content-Type, Authorization"
</IfModule>


  - php.ini , PHP 설정을 조정
session.cookie_domain = ".abc.com"
session.cookie_secure = On
session.cookie_httponly = On

네 맞습니다.
www.abc.com 은 별도의 홈피가 운영중 입니다.
aaa.abc.com 도 별도의 홈피가 운영중 입니다.  ->  www.abc.com/aaa/ 해서 홈피를 뜨게하려고 하는것 입니다.

"""www.abc.com 은 별도의 홈피가 운영중 입니다.
aaa.abc.com 도 별도의 홈피가 운영중 입니다.  ->  www.abc.com/aaa/ 해서 홈피를 뜨게하려고 하는것 입니다.
""" 이 경우라면 첫 질문부터 잘못된 듯합니다.

. . .
"www.abc.com, aaa.abc.com  두 프로젝트가 완전히 독립적이라면,
www.abc.com/aaa/ 하위 디렉터리에 새로운 프로젝트를 설치하고 이를 운영하면 됩니다.

방금 적용결과..
브라우저창에 aaa.abc.com을 실행시...
 abc.com/aaa//aaa/aaa/aaa/aaa/aaa/aaa/aaa/aaa/ 죽~~~ 


페이지가 작동하지 않습니다.
www.abc.com에서 리다이렉트한 횟수가 너무 많습니다.

이렇 메세제가 출력됩니다. ㅠㅠ

리다이렉트 루프입니다.
설정 파일 내 리다이렉트 규칙과 RewriteRule 간의 충돌 때문입니다.

<VirtualHost *:80>
    ServerName aaa.abc.com

    # HTTPS로 리다이렉트
    Redirect 301 / https://aaa.abc.com/
</VirtualHost>

<VirtualHost _default_:443>
    ServerName aaa.abc.com
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key

    RewriteEngine On

    # 현재 요청이 이미 https://www.abc.com/aaa/인 경우 리다이렉트하지 않음
    RewriteCond %{HTTP_HOST} ^aaa\.abc\.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/aaa/ [NC]
    RewriteRule ^(.*)$ https://www.abc.com/aaa/$1 [R=301,L]
</VirtualHost>


> CORS와 PHP 설정은 유지하면 됩니다.

실행결과..
https://aaa.abc.com 으로 접속시  https://www.abc.com/aaa//  접속되나 로그인시 타url 지정할수 없습니다.

https://www.abc.com/aaa/  접속은 되나 로그인 시 타 도메인에 url을 지정할수 없습니다.

첫 문의했던것과 차이가 없군요.  서버 설정부분이 아닌가 싶기도 합니다 만...

부모 도메인이 틀려서 그렇습니다.

aaa.abc.com 이든 www.abc.com 이든 최초 호스트와 다른도메인이기 때문이죠

 

로그인 채크에서 로그인 이전에 기억한 URL 로 리턴하는 구문이 있는데

(회원글쓰기인데 비회원접근시 로그인 알림 나오고 로그인 후 다시 해당 글쓰기로 이동하는것...)

해당 리턴채크 하는곳에서 현재 도메인이 아닌 다른 도메인일경우 위 경고가 나옵니다.

alert() 이나 goto_url() 채크해보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT