2010-06-11 2 views
0

하위 도메인을 기반으로 이미지를 게재하는 웹 앱이 있습니다. IIRF 규칙에서 '대시'를 '밑줄'로 바꾸는 방법은 무엇입니까?

우리는이 같은 URL로 사용자를 제공하고 싶었 : http://{username}.domain.com/images/myimage.jpg

을 대신에 우리가 무엇을 사용했는지의 : http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg

이이 URL을 짧게 적은 'snoopable'합니다.

그래서 몇 가지 URL을 다시 작성하기 위해 IIRF .ini 파일을 설정하고 일부 사용자 폴더에 밑줄이 있다는 사실을 제외하면 큰 효과가 있습니다. 그리고 내가 읽은 것부터 밑줄는 도메인 이름에서 유효한 문자가 아닙니다 (IIS가 지원하더라도).

http://some-user.domain.com/...

이에 다시 작성할 수 있습니다 :

나는이 같은 URL이 그래서 내가 발견을하고 $1 역 참조에 대체 할 수있는 방법을 알고 싶어요

/users/some_user/..

내 IIRF 규칙은 다음과 같습니다.

RewriteCond %{HTTP_HOST} ^(?!www)([^\.]+)\.domain\.com 
RewriteRule ^/(.*)$ /users/*1/$1 [L,I] 

도움 주셔서 감사합니다.

+0

모든 사용자는 사용자 이름에 대시를 사용합니까? (다시 작성해야하는 올바른 URL은/users/some-user /이어야합니다)? – pkaeding

+0

아니요. 나는 잘 정의 된 디렉토리 구조를 가진 레거시 시스템을 다루고있다. – jessegavin

답변

1

당신은 사용자 이름에 X의 대시보다는 더 이상 존재하지 알고있는 경우 :

# no dash 
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)\.domain\.com 
RewriteRule ^/(.*)$ /users/*1/$1 [L,I] 

# one dash 
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)-([^\.\-]+)\.domain\.com 
RewriteRule ^/(.*)$ /users/*1_*2/$1 [L,I] 

# two dashes 
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)-([^\.\-]+)-([^\.\-]+)\.domain\.com 
RewriteRule ^/(.*)$ /users/*1_*2_*3/$1 [L,I] 

그것은 아름다운 건 아니지만, 그것을 작동합니다.

+0

제 상황에 잘 작동합니다. 고맙습니다. – jessegavin

관련 문제