【问题标题】:CodeIgniter routing or .htaccess issueCodeIgniter 路由或 .htaccess 问题
【发布时间】:2016-11-05 07:37:44
【问题描述】:

我刚拿到一个新的 CodeIgniter 项目,我认为我有路由问题或 .htaccess 问题,情况是这样的:

该项目位于这样的域中:www.example.com,当然我需要在我的 /var/www/html/project 文件夹中复制它,因为我不想直接在生产中工作服务器。

所以我下载了它并设法让前端部分从我的 localhost/project 文件夹中完美运行(实际上我最终使用了 ip 地址,因为如果我使用 localhost 它会因某种原因转到 www.localhost.com/project尽管我编辑了 htacces 文件,但我可以使用 ip)。

现在后台部分发生了一件非常奇怪的事情,我的意思是,如果我输入 127.0.0.1/project/admin 它会变成 127.0.0.1/project/admin/admin/login 而不是 /admin/login .

而且所有css和js文件的链接都很奇怪,不知道哪里来的这种奇怪。

这里有一些图片:

正如您在上图中的代码中看到的那样,它看起来不错,这是文件夹 css/admin.css 的路径,这是正确的,但是如果您查看控制台,您可以看到它尝试加载 admin/ css/admin.css 哪个当然不行。

现在,当我在地址栏中输入:1270.0.0.1/project/admin 时,它会转到 127.0.0.1/admin/admin/ login,当然它会转到 404,但如果我指定:127.0.0.1/project /admin/login 会加载您在上图中看到的内容。

下面我将放置配置文件中的路线和东西:

路线:

$route['default_controller']    = "home";
$route['scaffolding_trigger']   = "";

//variables
$lang = "([a-zA-Z]{2}/)?";
$index_lang = "([a-zA-Z]{2}/?)?";

//admin
$route["admin"]             = "admin";
$route["admin/(.*)"]        = "admin/$1";

From the config:
$config['base_url']     = "";
$config['admin_url']    = $config['base_url']."admin/";
$config['base_path']    = $_SERVER['DOCUMENT_ROOT']."/project/";

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = "index.php";

【问题讨论】:

    标签: php .htaccess codeigniter routes


    【解决方案1】:

    我只使用过几次 CodeIgniter,但我认为您的问题的原因是 a) 使用相对路径或 b) 错误的 URL 配置

    尝试在配置中重写

    $config['base_url']     = "";
    

    $config['base_url']     = "http://localhost-or-ip/project-folder-name/";
    

    另一种解决方案是修改根目录中的 .htaccess 文件 - 当然也可以将 config.php 修改为 $config['base_path'] = $_SERVER['DOCUMENT_ROOT'];(或其他原始值) 你可以尝试在 .htacces 中重写这个:

    RewriteBase /
    

    RewriteBase /project-folder-name/
    

    这两种解决方案(如果它们可以工作)都是可用的,但您应该考虑使用虚拟主机并将您的本地主机域 url 设置为例如:my-domain.com.local 并使用您的 hosts 文件通过本地主机 127.0.0.1 my-domain.com.local 连接此域

    【讨论】:

    • 先生,感谢您的帮助,将 $config['base_url'] 更改为项目文件夹。我是个白痴,因为我试过了,但没有在地址前面加上“http://”。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多