채택완료

mod_rewrite로 url줄이기 작업중 질문드립니다.

2018-04-11 (수) 13:53:06 1,939

벌써 몇번째 rewrite로 질문을 올리는지 모르겠네요 ㅎㅎ

회원님들 덕분에 조금씩 해결이 되어 진행중에 있는데요 또 한 번 막히는 부분이 있어 질문드립니다.

저희 사이트 리스트에 변수를 list_w_type만 받을때가 있고 list_region_type만 받을때가 있습니다.

그래서 아래와 같이 룰을 적용시키니 list_region_type은 안되더라구요.....ㅠㅠ

RewriteRule ^/hall/list/([a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_w_type=$1

RewriteRule ^/hall/list/([a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_region_type=$1

이럴경우 어떻게 룰을 변경해야 하는건가요? 조건문 같은거라도 있나요?

|

답변 1개 / 댓글 1개

채택된 답변
+20 포인트
2018-04-11 (수) 14:58:09

rewrite rule 을 잘 모르지만, 도움이 될까 싶어 남깁니다.

좌측의 패턴이 같으니, 그럴수밖에 없을 거라고 생각됩니다.

예를 들어, /hall/list/a123 은 첫번째 룰에도 해당이 되고, 두번째 룰에도 해당이 되는 패턴입니다.

첫번째 룰에서 적용이 일어나는 경우이니 list.htm?list_w_type=$1 으로 변환되고, 그 다음 줄의 내용까지는 가지 않을 것입니다.

(우선순위가 먼저 오는 것에 있을 것입니다.)

list_w_type 으로 변환해야될 때와, list_region_type 으로 변환해야될 때의 패턴이 조금이라도 달라야 합니다. 로직적인 부분의 재검토가 필요해 보입니다.

예를 들면 다음과 같은 처리를 생각해볼 수 있을  듯합니다.

RewriteRule ^/hall/list/(w[a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_w_type=$1

RewriteRule ^/hall/list/(r[a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_region_type=$1

알파벳과 숫자를 변환하되, w로 시작하는 경우는 w_type 으로, r 로 시작하는 경우로는 region_type 으로 

패턴이 서로 다르니 처리가 될 것입니다.

또는

RewriteRule ^/hall/list/w_type/([a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_w_type=$1

RewriteRule ^/hall/list/r_type/(r[a-zA-Z0-9]+)$ /home/thewedd/hall/list.htm?list_region_type=$1

식으로 룰을 줄 수도 있습니다.

이와같이 좌측의 패턴을 달리하는 방향으로, 로직을 재구성하는 것이 좋을 것 같습니다.

답변에 대한 댓글 1개

답변 감사합니다. 참고하겠습니다.

답변을 작성하려면 로그인이 필요합니다.