带.htaccess的通配符子域名(Codeigniter)

时间:2013-03-01 16:22:10

标签: .htaccess codeigniter mod-rewrite subdomain wildcard-subdomain

在我目前的项目中,我被要求为每个注册用户提供博客功能,这意味着当您注册时,您可以自动在网站上写博客。这很容易完成,但是,我被指示使用http://username.site.com格式的URL,使用用户名引用特定用户博客。

我试图用.htaccess文件实现这一点,但似乎我的条件得到满足但是我得到500内部服务器错误,这是由无限循环的重写引起的。我想避免这种情况,但我找不到合适的解决方案。到目前为止,这是我的.htaccess:

<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>

其他信息:该网站是服务器托管的,但隐藏在dev.example.com上,因此博客网址应如username.dev.example.com,当网站启动时,这当然是username.example.com。它是用Codeigniter构建的。

关于改进.htaccess的任何建议都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是不使用.htaccess。

这就是我要做的事情:

  1. 创建通配符DNS记录* .example.com
  2. 创建博客模式,选择$ _SERVER ['HTTP_HOST'],将其展开并删除您的域名。在数据库表中进行查找。
  3. 编辑:

    1. 创建通配符DNS记录,假设创建一个CNAME * .example.com&gt; www.example.com 这样,当我转到kyle.example.com时,它真正加载www.example.com。

    2. 创建博客模型:

    3. row_count()&gt; 0){        $ blogInfo = [         'blog_id'=&gt; 123,//来自db的值         'blog_name'=&gt;'Kyles测试博客',         ...        ]。        $这 - &GT;会话而&GT; set_userdata($代码bloginfo);        return $ blogInfo;       } else {        返回false;       }      }     } ?&GT;

      // controller

      session-&gt; userdata('blog_id')){//博客ID未保存的会话                 $这 - &GT;负载&GT;模型( 'blog_model'); //加载博客模型                 $ url = str_replace('。example.com','',strtolower($ _ SERVER ['HTTP_HOST'])); //获取当前主机名,例如kyle.example.com                 if($ url!=='www'){                     if($ blog_info = $ this-&gt; blog_model-&gt; checkForValidBlog()){                         //加载你的博客                         redirect('/ blog /'。$ blog_info ['blog_id']。'/');                     } else {                         show_error('错误 - 未找到博客',404);                     }                 }             } else {                 //加载你的博客                 redirect('/ blog /'。$ blog_info ['blog_id']。'/');             }         }     } ?&GT;