【问题标题】:Wildcard subdomains with .htaccess (Codeigniter)带有 .htaccess (Codeigniter) 的通配符子域
【发布时间】:2013-02-16 05:12:26
【问题描述】:

在我目前的项目中,我被要求为每个注册用户提供博客功能,这意味着当你注册时,你可以自动在网站上写博客。这很容易完成,但是,我被指示使用格式为 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 上,因此博客 URL 应该看起来像 username.dev.example.com,当站点启动时,这当然是 username.example.com。它是用 Codeigniter 构建的。

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

【问题讨论】:

  • 您是否尝试删除第一个重写条件/规则以隔离问题?
  • @Brendan 是的,我做到了,同样的错误。

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


【解决方案1】:

最好的方法是不使用 .htaccess。

这就是我会做的:

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

编辑:

  1. 创建通配符 DNS 记录,比如说创建一个 CNAME *.example.com > www.example.com 这样,当我转到 kyle.example.com 时,它会真正加载 www.example.com。

  2. 创建博客模型:

row_count() > 0) { $博客信息 = [ 'blog_id'=>123, // 来自数据库的值 'blog_name'=>'Kyles 测试博客', ... ]; $this->session->set_userdata($blogInfo); 返回 $blogInfo; } 别的 { 返回假; } } } ?>

// 控制器

session->userdata('blog_id')) { // blog id 未保存 session $this->load->model('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'] . '/'); } 别的 { show_error('错误 - 找不到博客', 404); } } } 别的 { // 加载你的博客 重定向('/blog/' . $blog_info['blog_id'] . '/'); } } } ?>

【讨论】:

  • 我遇到过这个但不明白。如果你来PC或笔记本电脑,你能详细说明一下吗?谢谢
猜你喜欢
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2014-09-06
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多