【问题标题】:.htaccess mapping subdomain to a directory having codeigniter framework.htaccess 将子域映射到具有 codeigniter 框架的目录
【发布时间】:2018-07-16 20:26:11
【问题描述】:

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

我想按以下方式映射子域

  1. demo1.example.com 到 demo1 目录
  2. 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.example.com/demo1/ 为此,我使用了以下重写规则

RewriteRule ^demo1/(.*)$ /$1 [L,NC,R]

但无法从 url 中删除 demo1 我在 demo1 目录中有 codeigniter 框架,具有以下 htaccess

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteRule ^(.*)$ index.php?/$1 [L,QSA]


</IfModule> 

【问题讨论】:

  • #Redirect to www location with subdirectory RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]

标签: php apache .htaccess codeigniter mod-rewrite


【解决方案1】:

如果您在每个子目录中都安装了完整的框架,并且没有进行任何类型的动态映射,那么重写 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>

根据您使用的主机类型,您可以在主机管理后端创建虚拟主机,或查看Apache 2.2 docs 了解更多信息。

【讨论】:

    猜你喜欢
    • 2015-10-26
    • 1970-01-01
    • 2014-04-23
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2016-04-26
    相关资源
    最近更新 更多