0

현재 프로젝트에서는 등록 된 모든 사용자에 대해 블로그 기능을 제공하라는 요청을 받았습니다. 즉, 등록 할 때 자동으로 사이트에 블로그를 쓸 수 있습니다. 이것은 쉽게 끝났지 만, 특정 사용자 블로그에 사용자 이름을 나타내는 http://username.site.com과 같은 형식으로 URL을 사용하도록 지시 받았습니다..htaccess (Codeigniter)가 포함 된 와일드 카드 하위 도메인

.htaccess 파일을 사용하여이 작업을 수행하려고했지만 내 조건이 충족 된 것으로 보이지만 재 작성 작업이 무한 루프로 인해 500 개의 내부 서버 오류가 발생했습니다. 나는 그것을 피하고 싶지만 적절한 해결책을 찾을 수 없다.

<IfModule mod_rewrite.c> 

    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 
    RewriteBase/

    RewriteCond $1 !^(index\.php|images|tinymce|files|css|js|robots\.txt) 
    RewriteRule ^(.*)$ /index.php/$1 [L] 

    RewriteCond %{HTTP_HOST} !^www. [NC] 
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-_]+).dev.example.com [NC] 
    RewriteRule ^(.*)$ /index.php/blog/%2/$1 [L] 

</IfModule> 

추가 정보 : 여기에 지금까지 내 htaccess로는이 사이트는 서버 호스팅,하지만 숨겨진 dev.example.com에 너무 사이트가 출시 될 때, 물론이 뜻이 username.example.com 될 URL의이 username.dev.example.com과 같아야 블로그입니다. Codeigniter로 제작되었습니다.

.htaccess 개선에 대한 제안 사항은 훌륭합니다. 감사합니다.

+0

문제를 분리하기 위해 첫 번째 다시 쓰기 조건/규칙을 제거해 보았습니까? – Brendan

+0

@Brendan 예, 동일한 오류가 발생했습니다. – marwellt

답변

0

이렇게하는 가장 좋은 방법은 .htaccess를 사용하지 않는 것입니다.

내가 할 것 인 것이다 :

  1. 는, 블로그 모달 만들기 와일드 카드 DNS 레코드 * .example.com을
  2. 만들기 [ 'HTTP_HOST'], 그것을 폭발 및 제거 $ _SERVER 픽업하여 도메인. DB 테이블에서 조회를 수행하십시오.

는 편집 :

  1. 이 와일드 카드 DNS 레코드를 만들기 때 고토 kyle.example.com, * .example.com을> www.example.com 이 방법 CNAME을 만들 말할 수는 실제로 www.example.com을로드 중입니다.

ROW_COUNT()> 0) { $ blogInfo는 = [ 는 => 123, // 'BLOG_NAME'=> 'Kyles 테스트 DB에서 값을'blog_id '

  • 하는 블로그 모델 만들기 블로그 ', ... ]; $ this-> session-> set_userdata ($ blogInfo); return $ blogInfo; } else { false를 반환합니다. } } } ?>

    // 컨트롤러

    세션 -> 유저 데이터 ('blog_id')) {// 블로그 ID 저장되지 세션 $ this->로드 -> 모델 ('blog_model'); // 블로그 모델을로드하십시오. $ url = str_replace ('. example.com', '', strtolower ($ _ SERVER [ 'HTTP_HOST']))); // 현재 호스트 이름을 가져옵니다. 예 : kyle.example.com if ($ url! == 'www') { if ($ blog_info = $ this-> blog_model-> checkForValidBlog()) { // 블로그를로드합니다. 리디렉션 ('/ blog /'. $ blog_info [ 'blog_id']).'/'); } else { show_error ('오류 - 블로그를 찾을 수 없음', 404); } } else { // 블로그로드 리디렉션 ('/ blog /'. $ blog_info [ 'blog_id']. '/'); } } } ?>
  • +0

    나는 이것을 보았지만 그것을 이해하지 못했습니다. PC 나 노트북에 오면 정교하게 만들 수 있습니까? 고맙습니다 – marwellt

    관련 문제