Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在一个单独的文件夹中运行多个子文件夹网站_Php_.htaccess_Codeigniter_Mod Rewrite_Laravel - Fatal编程技术网

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

Php 在一个单独的文件夹中运行多个子文件夹网站,php,.htaccess,codeigniter,mod-rewrite,laravel,Php,.htaccess,Codeigniter,Mod Rewrite,Laravel,我有一个主网站(example.com)。我在那里使用CodeIgniter框架 我还将使用一些不同的子文件夹,如example.com/sub1,example.com/sub2。我在这里使用的是Laravel框架,这些框架与example.com完全不同,存储在不同的文件夹中。当我启动第一个子域时,我在Apache2配置中使用了Alias,它工作得非常好。但是,我现在需要使用第二个子文件夹。我在Apache配置中添加了第二个Aliassub2,它指向与sub1相同的目录。然后我更改了对以下内

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

我还将使用一些不同的子文件夹,如
example.com/sub1
example.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>

选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
1美元^(img | js | css)
RewriteCond%{REQUEST_URI}(/evim)
重写规则^/evim/index.php[L]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
1美元^(img | js | css)
RewriteCond%{REQUEST_URI}(/crm2)
重写规则^/crm2/index.php[L]
现在它工作得很好。example.com/sub1和example.com/sub2都运行相同的应用程序。然而,在Laravel中,很难找到当前正在运行的子域。在路由中,应用程序看不到子文件夹名称。例如,如果我使用
users/login
路由,那么它将同时匹配
example.com/sub1/users/login
example.com/sub2/users/login
。我需要用子文件夹名称定义路由

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

我将使用此模式(作为子域),它可能会避免问题

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路由做同样的事情。

我使用
Request::server('HTTP\u HOST')
来获取加载的站点。

在codeigniter中,我发现最好的方法是创建子目录。使用自己的index.php和应用程序文件夹为后端调用Admin或任何您想要的名称。另一个名为catalog的文件夹main index.php将使用该目录作为应用程序文件夹。如果要为这两个目录创建库,请将其放在systems lib文件夹中。它是有效的,我正在做一个类似的,所有这些都是在管理安全方面做的,而且我发现在htacess上捣乱的次数更少更好。example.com使用CodeIgniter,而子文件夹应用程序使用Laravel。我想让它们在文件系统中完全分开。我会尽量坚持一个框架。是的,子域将是一个非常简单的解决方案,但我不能使用子域。