gpt4 book ai didi

php - CodeIgniter - 重定向子域设置为 "controllers"中的文件夹

转载 作者:可可西里 更新时间:2023-11-01 13:22:41 25 4
gpt4 key购买 nike

我正在尝试将任何或一组子域重定向到 CI 安装的“controllers”文件夹内的文件夹。我已经尝试了一堆在 SO 上找到的东西,但没有一个适用于我的项目或具有我需要的相同规范。由于我对 .htaccess 有点菜鸟,所以我想我可能会问这里更有资格的人。以下是规范:

  • 使用this awesome .htaccess file作为基地
  • 至少需要将这三个子域 (www|admin|api) 重定向到/application/controllers/(www|admin|api) 等效文件夹
  • 不丢失 REQUEST_URI(只是说)
  • 并且没有实际更改地址栏中的 URL

示例:http://api.domain.com/some/uri/segments 应该在内部重定向到 CI_installation_folder/application/controllers/api/some/uri/段

我试过这样的事情(和变体):

RewriteCond %{HTTP_HOST} ^(www|admin|api) [NC]
RewriteRule ^(.*)$ /%1/$1 [L,R=301]

或将 RewriteRule 替换为其他两行,如下所示:

RewriteCond %{ENV:REDIRECTED} !true
RewriteRule ^(.*)$ [L,R=301,E=REDIRECTED:true]

为了防止循环,但我所能得到的只是循环重定向(第一种情况),甚至是某些变体的 500 服务器错误 :(

添加这个

RewriteCond %{REQUEST_URI} !^/(www|admin|api) [NC]

也不会工作,因为我没有更改地址栏中的 URL。我也没有在 [P] 标志上取得任何成功。

有人可以帮忙吗?谢谢!

最佳答案

您是否尝试使用 Codeigniter 的路由配置?

您不必使用 htaccess 重写 - 尽管这是一种有效的方法,您可以只检查 config/route.php 文件中的子域并设置您的子域的路由。

switch ($_SERVER['HTTP_HOST']) {
case 'admin.domain.com':

$route['(:any)'] = "admin/$1"; // this will set any uri and add the controler fodler to it

$route['default_controller'] = "admin/home"; // set the default controller for this subdomain

break;

case 'api.domain.com':

$route['(:any)'] = "api/$1"; // this will set any uri and add the controler fodler to it

$route['default_controller'] = "api/home"; // set the default controller for this subdomain

break;
}

如果你希望它成为一个更通用/动态的路由,你可以像这样(在同一个 config/route.php 文件中):

$controllerFolderName = array_shift((explode(".",$_SERVER['HTTP_HOST'])));

$route['(:any)'] = $controllerFolderName."/$1";
$route['default_controller'] = $controllerFolderName."/home";

此路由适用于所有子域,并将默认路由设置为 Controller 文件夹内与子域同名的文件夹,因此对于像 api.domain.com 这样的域,您会将路由设置为 api 等.

重要的是,您对所有文件夹名称保持相同的逻辑,它们将始终与您的子域匹配,我还建议为没有子域 (http://domain.com) 的访问者添加错误处理系统,以及您有子域的情况子域,但不存在具有该名称的文件夹(您可以使用 file_exits 做到这一点)

关于php - CodeIgniter - 重定向子域设置为 "controllers"中的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com