묻고답하기
리디렉션 질문입니다
2020.05.10 00:13
XE 최신코어 상태입니다
가비아에서 도메인 구매했고, 서버는 시놀로지 NAS에 올려서 DNS 연동시켜 사용하고 있는데요
최초 로그인시 로그인을 시도하면 바로 로그인이 되지 않고 한번 튕겼다가 다시 시도하면 그때부터 로그인이 정상적으로 되는 현상이 있습니다
이리저리 살펴보니 최초 로그인 시에 리디렉션 현상이 발생해서 브라우저가 자동으로 차단시켜버리는거같은데요... 왜 두번째부터는 정상적으로 되는지는 모르겠는데 여튼 문제는 이렇습니다
1. 주소창에 xxxxxx.org 입력하여 홈페이지 접속 (주소창에는 xxxxxx.org 로 접속됨)
2. 로그인 버튼을 눌러 아이디/비밀번호 입력하는 페이지로 이동하면 주소창이 'xxxxxx.org/index.php?mid=index&act=dispMemberLoginForm' 로 변경됨 (여기서부터 문제인것 같습니다)
3. 아이디/비밀번호를 입력하고 로그인을 누르면 'xxxxxx.org/index.php?mid=index' 으로 이동하면서 로그인이 되지 않음
4. 2~3번 항목을 반복하면 주소창은 똑같으나 로그인이 정상적으로 됨(브라우저를 종료하고 켜도 되는걸로 보아 세션? 쿠키? 가 유지되는걸로 추정됨. 다른 브라우저로 하면 최초 1회에 한해 동일 문제가 똑같이 발생하고, 컴퓨터를 재부팅하면 다시 초기화되어 문제가 발생합니다)
이리저리 검색해보니까 '관리자 페이지 - 설정(일반) - 고급 - 짧은 주소 사용'을 체크하라는 내용이 있어 그대로 했는데 이게 설정이 안바뀌는겁니다. 아무리 설정 바꾸고 저장 눌러도 새로고침된 페이지에서는 사용 안함으로... 한참 찾아보다 제가 사용하는 시놀로지 NAS가 DSM6으로 업데이트 되면서 웹 기본 엔진이 nginx로 되어있다는 말을 듣고 가상스테이션에서 설정을 아파치2.2로 변경해 주었습니다. 하지만 아파치로 변경해도 설정이 바뀌지 않길래 conf 파일 수정, phpinfo()출력 등 모두 확인해 봤는데 뭐 때문인진 모르겠는데 어느 순간부터 갑자기 설정값이 '사용함'으로 저장이 됩니다.
<여기서부터 문제입니다..>
설정에서 분명 '짧은 주소 사용'이 체크된 상태인데 index페이지와 로그인 페이지의 주소가 그대로 길게 노출됩니다.
xxxxxx.org/index.php?mid=index
xxxxxx.org/index.php?mid=index&act=dispMemberLoginForm
근데 웃긴건 다른 게시판들을 누르면 주소가 짧게 단축된 상태로 나옵니다
board_rYzP60/1821
beluxe_sXWS87/768
도무지 정체를 모르겠네요. 게다가 index 페이지도 말썽입니다.
xxxxxx.org 로 접속하는 화면이랑 xxxxxx.org/index.php?mid=index 이랑 화면에 표시되는게 다릅니다
메인 페이지의 좌측에 메뉴바가 존재하는데 xxxxxx.org로 들어가면 메뉴바가 없습니다.
xxxxxx.org/index.php?mid=index 여기로 들어가면 메뉴바가 튀어 나옵니다.
이거때문에 너무 골치아프네요.
phpinfo() 값을 출력해도 NAS환경이라 그런건지 모르겠는데 rewrite_module 이 보이질 않습니다.(loaded_modules 라는 항목 자체가 없습니다. 그리고 NAS에서 제어할 수 있는 php 모듈팩에는 rewrite_module 항목이 아예 없습니다. 다만 아파치의 httpd.conf에 들어가면 해당 모듈을 load하는 명령어가 작성되어 있습니다. rewrite_module이 정상적으로 로드된 상태인지 확인이 불가능합니다.
이유가 뭘까요? 짐작가는게 있다면 조언좀 부탁드립니다.
위의 문제가 아니더라도 로그인이 최초 2회 필요한 현상에 대해 아시는게 있다면 조언 부탁드립니다
참고로 도메인은
[xxxxxx.org] -> [웹 루트경로/xe]
으로 링크되어 있습니다
글이 너무 두서가 없었네요
제가 궁금한점을 요약하자면
1. 최초 로그인 시도시 2회 로그인을 시도해야 하는 이유
2. 위 상태가 '짧은 주소 사용' 기능이 적용이 된 것인지, 적용이 되지 않았다면 무엇 때문인지
3. xxxxxx.org와 xxxxxx.org/index.php?mid=index 페이지 출력이 다른 상태인데 이를 어떻게 조정해야 하는지
입니다. 바쁜 시간 뺏어서 죄송합니다. 가르침을 구합니다
댓글 2
-
ys****
2020.05.10 00:41
-
ehii
2020.05.10 01:55
xxxx.org 와 www.xxxx.org는 다른 도메인입니다. 일단 도메인이 다르면 다른 사이트로 인식하는 것이라고 보시면 됩니다. 세션을 공유하는 작업을 별도로 하지 않는 한 로그인 유지가 되지 않는 것이 당연합니다. daum에 로긴했다고 naver에 로긴이 되는게 아닌것처럼요. 두 번 로긴해야하는것은 xxxx.org www.xxxx.org 두 도메인에서 각각 로긴하는것으로 보입니다.
이를 XE에서 해결하려면
1. a로 접속하면 계속 a로, b로 접속하면 계속 b로 (xxxx.org나 www.xxxx.org 두 도메인 각각 쓰려고할때)
2. a,b어느것으로 접속하든지 처음부터 a로 연결 (어느 연결이든지 www.xxxx.org만 사용)
두가지 방법이 있습니다.
1. 같은 사이트에 각각의 도메인을 쓰면서 메뉴링크나 로긴에도 접속한 도메인을 계속 유지하고 싶다면,
files/db.config.php 26줄 에서 아래와 같이 수정하시면 됩니다.
'default_url' => "http://".$_SERVER["HTTP_HOST"]."/",http://www.xpressengine.com/tip/22398014
2. 방문유저가 xxxx.org로 접속하면 www.xxxx.org 도메인으로 연결되게 하고 싶으면,
아파치에서는 .htaccess 파일에서 redirect하면 됩니다. 파일을 열어 아래 구문을 추가하시면 됩니다.(nginx는 .htaccess가 안되니 이를 nginx.conf로 변환해서 쓰셔야합니다.)
# rediection
RewriteCond %{HTTP_HOST} ^xxxx\.org [NC]
RewriteRule ^(.*)$ http://www.xxxx.org/$1 [L,R=301]현재 root/xe/폴더에 xe 설치하셨고 추가로 redirect 하셨다면, 위 작업(2.)과 충돌할 수 있습니다. 가능하면 root폴더에 별도 폴더를 생성하지 않고 직접 xe를 설치하시는것을 권장합니다.
짧은주소기능은 적용된것으로 보입니다. 참고로 관리자페이지 하단의 "서버환경확인"에서도 rewrite_mod 적용여부를 확인할 수 있습니다.
홈페이지접속과 직접index모듈접속이 달리 보이는 것은 1)모듈(메뉴)별로 레이아웃을 달리 설정할 수 있는데 그 때문이거나,
2) 도메인연결을 포워딩연결로 하셨거나..... 혹시 포워딩으로 연결하셨다면 고정포워딩은 프레임셋방식이라 반응형레이아웃에서 문제가 있고, 유동은 ddns주소가 드러나는 단점이 있기 때문에 이를 삭제하시고 꼭 a record나 c name으로 다시 연결하시기 바랍니다. 홈서버이시니 cname으로 ddns에 연결하시면 됩니다.
ps. xe에서 포크된 rhymix 쓰시는걸 추천합니다. 위 같은 문제가 애초에 없습니다.
1번 항목은 스스로 찾은거 같습니다.
로그인이 2회 요구되는 이유는 도메인 문제로 추정됩니다.
xxxx.org 로 접속하고 로그인을 누르면
www.xxxx.org/index.php?mid=index 로 넘어가네요.
이 상태에서 아이디/비밀번호 입력 후 '이전 페이지'로 돌아가는 과정에서 세션 충돌이 일어나는것같습니다.
근데 xxxx.org 로 접속을 시도해도 강제로 www.xxxx.org 로 리디렉션 시켜줄 방법을 모르겠네요 ㅜ