질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS XpressEngine

getUrl()

 

위 결과에서  https://domain.com/ 

이부분만 제거해서 담아야 합니다.

 

검색해도 잘 모르겠네요.

 

  • profile

    getNotEncodedUrl('', 'mid','~~~')

    으로 사용해보세요.

  • profile profile
    도메인은 그대로 남는데요.. ㅡㅡ;
  • profile profile
    getUrl('page',$prev_page,'document_srl','','division',$division,'last_division',$last_division)

    요런 형태입니다.
  • profile profile
    parse_url 로 담으면 array 로 담기는데요.

    제가 필요한건 [path] [query] 두개가 필요합니다. ㅡㅡ;
  • profile profile

    https://sourceforge.net/p/xe-core/wiki/Functions/
    에서 getNotEncodedUrl 검색해보시면 http 프로토콜을 포함하지 않고 /mid/123 같은 형태로 uri를 만들어서 저장하게 됩니다. (최근에 알림센터의 보안 이슈관련 부분도 도메인이 포함되어있어서 도메인을 포함하지 않고 저장하도록 한적이 있는데 이렇게 처리 하였엇습니다.)

    그래서 기본동작은 getNotEncodedUrl을 사용할경우 도메인이 포함되지 않는 것이 원칙입니다만 특정 환경이나 SSL설정의 유무에 따라 포함되는 경우도 있는 것으로 보여집니다..

  • profile profile
    이게 혹시 무슨뜻인지 알 수 있을까요?

    "parse_url 로 담으면 array 로 담기는데요.

    제가 필요한건 [path] [query] 두개가 필요합니다. ㅡㅡ;"

    제가 이해가 안되어서요..

    일반적으로 getUrl 도 그렇고 도메인은 포함되지 않는 것으로 저장되는 형태로 이해하고 있어요.
  • profile profile

    일단 도메인이 포함되서 결과가 만들어져서요. 

    그럼 배열에서 [path] [query] 두개만 연속으로 뽑아서 변수에 담으려면 어쩌면 될까요 ?

  • profile profile
    일단 두번을 뽑아서 연결하는 방법을 생각해볼게요.. 이거 말고 간단히 도메인만 제거되면 좋을텐데 어렵네요.
  • profile profile
    배열의 값이 무엇인지 궁금합니다.
    어떤 배열이고 그 배열의 내용이 어떤 내용을 가지고 어디로 입장하는 도메인을 만드는것인지가 궁금합니다.

    [path] [query] 이라는 복합적으로 해석이 가능한 단어말고.. 직관적으로 어떤것인지 명시 해주시면 답변드리기 편할 것 같아요.
  • profile profile
    parse_url($uri) 로 php에서 담으면 배열로 담기네요.
  • profile profile
    아.. parse_url($url, PHP_URL_PATH); 으로 한번 사용해보세요.
  • profile profile

    https://domain.com/index.php?abcd

    저는 index.php?abcd 가 필요합니다.

    배열에는 /index.php가 pathe 이고 abcd가 query 입니다.

    저는 path?query 가 필요한 상황입니다.

  • profile profile
    $arrayUri = parse_url($url);

    $uri = $arrayUri['path'] . '?' . $arrayUri['query'];

    이렇게 만들어보세요.
  • profile profile
    오.. 감사합니다. 일단 성공했습니다.
  • profile

    XE의 기본URL과 같은 도메인에 소속된 주소이고, full SSL이라면 람보님 말씀처럼 도메인이 없는 URL이 자동으로 생성되어야 맞습니다만... 어떤 이유에서인지 이게 제대로 적용되지 않고 있는 모양이네요.

     

    getUrl과 getNotEncodedUrl의 차이는 escape가 되느냐 안되느냐의 차이일 뿐, 위의 내용은 변함이 없습니다. 템플릿에서는 escape가 반드시 필요하므로 getUrl을 사용하는 것이 옳습니다. getNotEncodedUrl은 템플릿이 아닌 controller에서 리다이렉트 처리를 할 때 주로 사용합니다.

     

        preg_replace('!^https?://[^/]+!', '', getUrl(.....))

     

    이렇게 getUrl의 결과를 정규식으로 처리하는 방법도 있습니다. parse_url을 사용하여 불필요한 구성요소까지 모두 다 분리해 내는 것보다 성능상의 이점이 있을지는 모르겠습니다만, 한 줄로 처리하기에는 이쪽이 편하죠.

  • profile profile
    일단 뭐가 뭔지 잘 몰라서 시도하는거 폐기하고 그냥 최종적으로 사용하는 자료의 js 에서 주소를 바꿔서 마무리 했습니다 ㅡㅡ;
  • profile profile

    주소는 도메인 없이 잘 만들어지는데 템플릿에서 출력하여 도메인이 붙어 출력되는거 같고 일단 게시판 스킨에서 만든 주소를 애드온의 js에서 사용하도록 하려다 보니 그냥 애드온의 주소체계를 바꾸는게 더 좋은거 같아 그렇게 했네요.