CodeIgniter中的mod_rewrite,子域和htaccess

时间:2012-03-07 19:42:36

标签: .htaccess codeigniter mod-rewrite dns subdomain

现在我正在使用codeigniter开展网店项目。 最后,子域名上将有多个网上商店,主域名将有一个首页。

它应该是充满活力的,以便网上商店获得自己的子域名。 商店信息在数据库中。假设我有一个mysql表,其中包含以下信息:

  • 网上商店:Bobs商店
  • webshop_subdomain:bobsshop

等等。

现在在.htaccess文件中我想制作一个重写规则,以便将bobsshop.mydomain.com重写为mydomain.com/bobsshop/,因为我在Codeigniter中使用控制器。

你应该记住,index.php也必须被重写,并且还应该有可能制作像bobsshop.mydomain.com/contact /

这样的子页面

我将创建一个php脚本,它将检查数据库中是否存在子域,如果它不存在,那么访问者将看到404。

我的DNS设置看起来像这个ATM:

  • mydomain.com xxx.xxx.xxx.xxx
  • * .mydomain.com xxx.xxx.xxx.xxx

其中xxx.xxx.xxx.xxx是我的服务器IP。

我以前从未使用过htaccess / mod_rewrite。 可以吗?是否有人可以帮助我做到这一点?

抱歉我的英文。我希望你明白我在做什么。

提前致谢

1 个答案:

答案 0 :(得分:0)

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^((?!www\.)(?!mydomain\.com)[^\.]+)\.
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?/%1/$1 [L] 

输入网址 - http://adasd.mydomain.com/test

1    RewriteCond %{HTTP_HOST} ^((?!www\.)(?!mydomain\.com)[^\.]+)\.

     This condition was met

2    RewriteRule ^(.*)$ http://www.mydomain.com/index.php?/%1/$1 [L]

     This rule was met, the new url is http://www.mydomain.com/index.php?/adasd/test
     The tests are stopped, using a different host will cause a redirect

输出网址 - http://www.mydomain.com/index.php?/adasd/test

然后,您可以通过

从URL中删除index.php
  1. 从system / application / config目录打开config.php并替换 $config['index_page'] = "index.php"$config['index_page'] = ""
  2. 。{
  3. 实施上述.htaccess文件
  4. 在某些情况下,uri_protocol的默认设置无法正常工作。要解决此问题,只需将$config['uri_protocol'] = "AUTO"替换为system / application / config / config.php中的$config['uri_protocol'] = "REQUEST_URI"