在一个单独的文件夹中运行多个子文件夹网站

时间:2014-06-24 16:32:08

标签: php .htaccess codeigniter mod-rewrite laravel

我有一个主网站(example.com)。我在那里使用CodeIgniter框架。

我还会使用一些不同的子文件夹,例如example.com/sub1example.com/sub2。我在这里使用Laravel框架,这些将与example.com完全不同,并存储在不同的文件夹中。当我开始第一个子域时,我在Apache2配置中使用了Alias,它运行得非常好。但是我现在需要使用第二个子文件夹。我在Apache配置中添加了第二个Alias sub2,它指向与sub1相同的目录。然后我改变了我的.htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond $1 !^(img|js|css)
    RewriteCond %{REQUEST_URI} (/evim)
    RewriteRule ^ /evim/index.php [L]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond $1 !^(img|js|css)
    RewriteCond %{REQUEST_URI} (/crm2)
    RewriteRule ^ /crm2/index.php [L]
</IfModule>

现在它运作正常。 example.com/sub1和example.com/sub2都运行相同的应用程序。但是在Laravel中,很难找到当前正在运行的子域。在路由中,应用程序不会看到子文件夹名称。例如,如果我使用users/login路由,那么它会匹配example.com/sub1/users/loginexample.com/sub2/users/login。我需要用子文件夹名称定义路由。

我正在寻找htaccess或Laravel的解决方案来修复路线。

2 个答案:

答案 0 :(得分:0)

我会使用这种模式(作为子域),它也许可以避免问题。

http://site1.foo.com http://site2.foo.com

在CodeIgniter Route.php中,您可以执行以下操作:

$server_link = explode(".", $_SERVER["HTTP_HOST"]);

if ( $server_link[0] == "site1" )
{
   $route['default_controller'] = 'home';
   // Some Other Routes
}

我认为你可以为Laravel路线做同样的事情。

答案 1 :(得分:0)

我使用int count = 1; foreach (TableCell c in e.Row.Cells) { bool b = Convert.ToBoolean(((GridViewRow)e.Row.DataItem).Row["Checked"]); //error if (count == e.Row.Cells.Count) { c.Text = "<input type=\"checkbox\" " + ((b) ? "checked" : "") + "/>"; } count++; } 来获取加载的网站。