Php 在一个单独的文件夹中运行多个子文件夹网站
我有一个主网站(example.com)。我在那里使用CodeIgniter框架 我还将使用一些不同的子文件夹,如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/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。我想让它们在文件系统中完全分开。我会尽量坚持一个框架。是的,子域将是一个非常简单的解决方案,但我不能使用子域。