2014-05-24 8 views
0

나는 mod_rewrite로 apache2를 얻었으며 사이트의 .htaccess에도 액세스 할 수 있습니다.URL을 변경하지 않고 하위 도메인 리디렉션

URL profile.domain.com/usernamewww.domain.com/profiles/php?user=username으로 리디렉션하고 URL은 profile.domain.com/username으로 유지하고 싶습니다. 이미 모든 하위 도메인을 잡을 수있는 와일드 카드 설정이 있습니다. 내가 사용하려고 :

RewriteCond  %{HTTP_HOST} ^profile\.domain\.com$ [NC] 
RewriteRule  ^(.+)$   http://www.domain.com/profiles/php?user=%1 [R=301,L] 

그러나 http://www.domain.com/profiles/php?user=에 URL을 변경하고 사용자 이름을 사로 잡았하지 않습니다. 또한 내가 원하는 URL을 변경하지 않으려 고합니다. profile.domain.com/username

답변

0

규칙이 거의 정확합니다. %1은 마지막으로 RewriteCond에서 첫 번째 캡처 그룹으로 바뀝니다. 첫 번째 캡처 그룹이 없으므로 ...로 대체됩니다. 대신 $1을 사용하려고합니다. 이는 RewriteRule의 첫 번째 캡처 그룹으로 대체됩니다.

두 번째 실수는 R -flag를 사용하여 외부 리디렉션하는 것입니다. 해당 플래그를 제거하고 domain-name을 제거하면 내부 재 작성으로 처리됩니다. 브라우저의 캐시를 비우십시오. 외부 리디렉션을 '기억'하고 사용자가 가지고있는 새 재 작성을 사용하지 않기 때문입니다.

당신은 될 겁니다 :

RewriteCond  %{HTTP_HOST} ^profile\.domain\.com$ [NC] 
RewriteRule  ^(.+)$   /profiles/php?user=$1 [L] 
+2

내가 다른 하위 도메인을 사용하지 않고 이것에 simmilar 뭔가했다하지만 난 얻을'요청으로 인해 가능성이 구성 오류로 (10) 내부 리디렉션의 한계를 초과했습니다. 필요한 경우 'LimitInternalRecursion'을 사용하여 제한을 늘리십시오. 백 로그를 얻으려면 'LogLevel debug'를 사용하십시오. ' – ParoX

+0

추가 RewriteCond % {REQUEST_URI}를 (를) 추가해야했습니다. [phpfilename] $ – ParoX

관련 문제