Php .htaccess将子域映射到具有codeigniter framework的目录

Php .htaccess将子域映射到具有codeigniter framework的目录,php,apache,.htaccess,codeigniter,mod-rewrite,Php,Apache,.htaccess,Codeigniter,Mod Rewrite,我知道有数百万种解决方案可用于将子域重定向到目录。但我仍然面临着这个问题 我想用以下方式映射子域 demo1.example.com至demo1目录 demo2.example.com至demo2目录 我正在使用以下代码 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^demo1\.example\.com$ #RewriteCond %

我知道有数百万种解决方案可用于将子域重定向到目录。但我仍然面临着这个问题

我想用以下方式映射子域

  • demo1.example.com至demo1目录
  • demo2.example.com至demo2目录
  • 我正在使用以下代码

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{HTTP_HOST} ^demo1\.example\.com$
        #RewriteCond %{REQUEST_URI} !^/demo1/
        RewriteRule (.*) /demo1/$1 [L]
    
        RewriteCond %{HTTP_HOST} ^demo2\.example\.com$
        RewriteCond %{REQUEST_URI} !^/demo2/
        RewriteRule (.*) /demo2/$1 [L]
    </IfModule> 
    
    但无法从url中删除demo1 我在demo1 dir中有一个codeigniter框架,具有以下访问权限

    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
    
      RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
    
    
    </IfModule> 
    
    
    重新启动发动机
    重写cond%{REQUEST_FILENAME}-F
    重写cond%{REQUEST_FILENAME}-D
    重写规则^(.*)$index.php?/$1[L,QSA]
    
    如果在每个子目录中都安装了完整的框架,并且没有进行任何类型的动态映射,那么重写URL并不是最好的解决方案

    只需为每个安装创建一个虚拟主机,并相应地设置服务器名称

    <VirtualHost *:80>
      DocumentRoot /var/www/example.com/demo1
      ServerName demo1.example.com
    </VirtualHost>
    
    <VirtualHost *:80>
      DocumentRoot /var/www/example.com/demo2
      ServerName demo2.example.com
    </VirtualHost>
    
    
    DocumentRoot/var/www/example.com/demo1
    ServerName demo1.example.com
    DocumentRoot/var/www/example.com/demo2
    ServerName demo2.example.com
    
    根据您使用的主机类型,您可以在主机管理后端创建虚拟主机,或查看以获取更多信息。

    #使用RewriteBase/RewriteCond%{HTTP\u HOST}domain.com[NC]RewriteRule^(.*)上的子目录RewriteEngine重定向到www位置http://www.domain.com/directory/index.html [R=301,北卡罗来纳州]
    <VirtualHost *:80>
      DocumentRoot /var/www/example.com/demo1
      ServerName demo1.example.com
    </VirtualHost>
    
    <VirtualHost *:80>
      DocumentRoot /var/www/example.com/demo2
      ServerName demo2.example.com
    </VirtualHost>