2012-03-10 7 views
1

htaccess를 사용하여 하위 도메인을 구현하려고합니다. 내가 입력 할 때htaccess가있는 동적 하위 도메인 : 브라우저에서 URL을 변경해야합니다.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{HTTP_HOST} !^www. 
    RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain.com(.*)$ 
    RewriteRule ^(.*)$ http://domain.com/index.php?/public_site/main/%1/$1 [L] 
</IfModule> 

ahser.domain.com 브라우저 URL은 변화하고있다. 절대 URL이 RewriteRule에서 사용될 때 이런 일이 일어나지 않도록하는 htaccess 옵션이 있습니까?

+0

'%'표기법으로 'RewriteCond'에서 일치하는 부분을 올바르게 가져 오는 것을 확인합니다. 나는 당신의 코드에서 그 문제를 발견했다. 질문은 http://stackoverflow.com/questions/9632242/hostgator-wildcard-subdomain-mapping-to-url이다. 해결책을 사용했지만 답변을 수락하지 않았습니다. – Kaz

+0

죄송합니다. 나는 새로운 사용자입니다. 나는 대답을 받아들이려면 적어도 15 개의 평판이 필요하다. – santosh

답변

0

도메인이 포함 된 전체 URL로 다시 작성하지 마십시오. 다른 웹 사이트로 이동하기 때문에 리디렉션이 생성됩니다. 거기에 microsoft.com을 넣을 수 있습니다. 그렇다면 리디렉션없이 어떻게 작동할까요?

당신이해야 할 일은 웹 페이지가 원래 도메인에서 작동하는지 확인하는 것입니다. 그래서 고객이 myname.domain.com/...에 대해 묻는다면 그 내용을 myname.domain.com/index.php?public_site/main/myname/...으로 다시 작성하십시오. 도메인을 동일하게 유지하십시오. index.php?은 해당 도메인에서 작동하도록 만들 수 있습니다. 예를 들어, 이것조차도 작동 할 수 있습니다 :

http://OTHER.domain.com/index.php?public_site/main/MYNAME/... 

즉. 그것이 어떤 가상 호스트가 그 경로에 접근 하느냐와 상관없이 설정하십시오. 당신이이 있으면

다시 쓰기는 바로 수행 할 수 있습니다

# will not trigger redirect 
RewriteRule ^(.*)$ /index.php?/public_site/main/%1/$1 [L] 

당신은 당신이 지금 같은 재 일치하는 긴 URL에 URL을 리디렉션하고 있기 때문에 루프를 도입하지 않도록주의해야 동일한 도메인을 rulethe. URL이 이미 /index.php?public_site/으로 시작하는 경우이 재 작성을 적용하지 않으려면 추가 RewriteCond이 필요합니다.

+0

흠 ... 당신 말이 맞아요. 리디렉션이 왜 그렇게 작동해야하는지 이해합니다. – santosh

+0

흠 ... 당신 말이 맞아요. 리디렉션이 왜 그렇게 작동해야하는지 이해합니다. 사용자 측에서 간단한 URL을 원했습니다. 그래서 만약 내가 최종 사용자 사이트에 간단한 URL을주는 내 사이트에 하위 도메인을 구현하는 오전 나는 PHP에서 일을하는 것이 htaccess보다 낫다고 생각합니다. – santosh

관련 문제