【发布时间】:2016-04-11 02:35:04
【问题描述】:
我有一个主要网站 (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>
现在它工作正常。 example.com/sub1 和 example.com/sub2 都运行相同的应用程序。但是在 Laravel 中,很难找到当前正在运行的子域。在路由中,应用程序看不到子文件夹名称。例如,如果我使用users/login 路由,那么它匹配example.com/sub1/users/login 和example.com/sub2/users/login。我需要用子文件夹名称定义路由。
我正在寻找 htaccess 或 Laravel 中的解决方案来修复路由。
【问题讨论】:
-
在codeigniter中我发现最好的方法是创建子目录。称为 Admin 或任何您想要的后端名称,带有自己的 index.php 和应用程序文件夹。另一个名为目录的文件夹主要 index.php 将使用目录作为应用程序文件夹。如果您想为这两个目录制作库,请将其放在系统 lib 文件夹中。它的工作原理我正在做类似的工作,只是在管理安全方面完成了大部分工作而且我发现 htacess 越少越好。
-
example.com 使用 CodeIgniter,但子文件夹应用程序使用 Laravel。我想让它们在文件系统中完全分开。
-
我会尽量坚持一帧工作
标签: php .htaccess codeigniter mod-rewrite laravel