mod_rewrite로 url줄이기 작업중 질문드립니다.
관련링크
본문
벌써 몇번째 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
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
식으로 룰을 줄 수도 있습니다.
이와같이 좌측의 패턴을 달리하는 방향으로, 로직을 재구성하는 것이 좋을 것 같습니다.