질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

라이믹스 2.0.14 + PHP 7.4 + nginx 사용 중입니다.

 

현재 라이믹스에서 기본 제공하는 짧은 주소 모드는 '모든 주소 형태를 사용'으로 체크되어 있습니다.

그런데 getUrl() 함수를 통해 URL을 불러오면 짧은 주소로 나오지 않고 index.php가 포함된 긴 주소 형태로 나옵니다.

 

예) {getUrl('act', 'dispMemberInfo','member_srl','')}로 URL을 불러오면 /board/member_info 형태가 아니라 /index.php?mid=board&act=dispMemberInfo 형태로 나옴

 

원인이 무엇일까요?

  • profile
    /board/member_info?member_srl=4

    접속시 접속이 되는지부터.. 확인해보시겠어요?
  • profile profile

    /board/write, /board/member_info 등등 접속 잘 됩니다. 그런데 희한하게 getUrl 함수로 주소를 불러오면 긴 주소로 나오네요..
    더 이상한 것은 게시판 스킨에서는 짧은 주소(/board/write, edit 등)로 잘 나오는데 레이아웃 부분에서만 긴 주소로 나옵니다.

    또 회원 닉네임 클릭했을 때 나오는 '회원정보 보기'는 짧은 주소로 잘 나오네요.

  • profile profile
    저또한 개인 테스트서버에서 문제없이 잘 나오는것을 확인했어서요..
    음...
  • profile

    저만 그런줄 알았는데 이런분이 더 계셨네요

    저는 컨트롤러나 모듈같은 쌩 php 파일에서 쓰면 괜찮은데, 스킨파일에서 쓰면 짧은 주소로 안나오더라고요

    https://github.com/Waterticket/rx-module-hotopay/blob/5bf6bd5aeebfc8ff5916e8883f2e4db2487bc15b/tpl/product_list.html#L32

    위처럼 스킨에서 getUrl을 쓰면 짧은 주소 적용이 안됩니다

  • ?
    getUrl이 긴 주소로만 나오는 문제 때문에 저도 좀 피곤하더군요...
    history 관련 모듈을 하나 만들었는데 이게 같은 주소가 긴주소 짧은주소 섞여 나오다보니... 같은 페이지가 히스토리에 2개씩 들어가는겁니다...
  • profile

    맨 앞에 ''로 초기화시킨 후, URL에 들어가야 하는 모든 변수를 빠짐없이 지정해 보세요.

     

    {getUrl('', 'mid', 사용할 mid값, 'act', 'dispMemberInfo', 'member_srl', '')}


    맨 앞에 ''를 넣지 않으면 현재 페이지의 mid값, page, 검색조건 등 온갖 잡다한 변수들을 모두 가져와서 추가로 지정한 변수들을 더하여 URL을 생성하게 되는데, 현재 페이지에 어떤 변수가 있는지에 따라 그 조합으로 짧은주소 구성이 가능할 수도 있고 불가능할 수도 있습니다. 어디에 코드를 넣는지에 따라 결과가 달라지는 이유입니다. 물론 그 밖에도 버그가 있을 수 있지만, 가장 흔한 원인부터 제거해 보는 것이 좋겠습니다.

     

    가장 중요한 것이 mid입니다. 라이믹스 짧은주소는 mid/act의 형태를 띠므로 mid가 없거나 해당 모듈에 정의된 act와 매칭되지 않으면 작동하지 않습니다. getUrl에 사용할 mid는 현재 $mid를 참조해도 되지만, 현재 $mid가 없을 수도 있으므로 어떤 값이든 강제지정하면 도움이 됩니다.

     

  • profile profile
    {getUrl('', 'mid', 'board', 'act', 'dispMemberInfo', 'member_srl', '')}
    이렇게 해 봤는데도 여전히 긴 주소로 나오네요... ㅠㅠ
  • profile profile
    이상하네요.. 테스트 서버에서는 /board/member_info로 잘 나오는데...
  • profile profile

    나름 테스트해보다가 원인을 발견했습니다.

    레이아웃 내에서 {getUrl('', 'module', 'admin')} 과 같이 관리자 페이지를 향하는 getUrl 함수가 있는 경우, 그 이후부터 호출되는 getUrl 함수는 관리자 페이지를 향하든 일반 링크로 향하든 무조건 긴 주소로 나옵니다.

    즉, 관리자 페이지 주소를 불러오는 getUrl 함수 이전에는 짧은 주소로 정상적으로 나오는데, 관리자 페이지를 향하는 getUrl 함수 호출 이후부터는 긴 주소로 나오는 것 같습니다.

    보통은 관리자 페이지 링크를 관리자 계정만 나올 수 있게 조건문을 걸어놓기 때문에 일반 회원 계정으로는 짧은 주소로 정상적으로 나옵니다. 그런데 관리자 계정으로는 관리자 페이지를 향하는 getUrl 함수가 사용되기 때문에 긴 주소로 나오네요.

  • profile profile
    오오 그렇군요! 늦은 시간까지 자세한 디버깅 감사합니다.
  • profile

    지난 3월 #1643 이슈와 관련하여 관리자 화면에서는 짧은주소가 적용되지 않도록 패치하면서 발생한 부작용인 것 같습니다. 오늘자 develop 브랜치에서 수정되었습니다.

  • profile profile
    이게 모든 주소 형태를 사용 을 선택했을때만 짧은 주소로 나오는건가요??? XE호환 으로 설정했을 시 긴주소로 나오는건지 궁금하네요. 패치된 것으로 교체해 봤으나 회원정보 보기 등이 긴주소로 나오네요. 하긴 저희는 닉네임 클릭후 메뉴에서 접근해도 긴주소네요.
  • profile profile
    XE 호환 선택하시면 회원정보 보기 등 대부분의 주소는 긴주소로 나옵니다. XE에서도 그랬으니까요.
  • profile profile
    네~~ 뭔가 알것 같네요. 단순히 명칭만 봐서는 알수가 없어 궁금했습니다.
  • profile profile
    확인했습니다! 빠른 패치 감사합니다.