如果我的文件夹和控制器使用相同的名称,我该怎么办?

时间:2018-04-17 07:58:52

标签: php codeigniter-3

我在我的codeigniter项目上有一个由作曲家创建的供应商文件夹,我也有供应商控制器,所以当我加载localhost/my_project/vendor时,它会打开作曲家文件夹,但是当我使用localhost/my_project/index.php/vendor时,它会加载控制器请以任何可能的方式解决此问题。  当我使用localhost/my_project/admin时,它完全有效,因为你认为我没有使用默认的.htaccess文件。

if (!defined('BASEPATH'))
  exit('No direct script access allowed');

class Vendor extends CI_Controller
{


    function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->library('paypal');
        $this->load->library('twoCheckout_Lib');
        $this->load->library('vouguepay');
        /*cache control*/
        $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
        $this->output->set_header('Pragma: no-cache');
        //$this->crud_model->ip_data();
        $vendor_system = $this->db->get_where('general_settings', array('type' => 'vendor_system'))->row()->value;
        if ($vendor_system !== 'ok') {
            redirect(base_url(), 'refresh');
        }
    }

    /* index of the vendor. Default: Dashboard; On No Login Session: Back to login page. */
    public function index()
    {
        if ($this->session->userdata('vendor_login') == 'yes') {
            $page_data['page_name'] = "dashboard";
            $this->load->view('back/index', $page_data);
        } else {
            $page_data['control'] = "vendor";
            $this->load->view('back/login', $page_data);
        }
    }

2 个答案:

答案 0 :(得分:0)

您应该为Web服务器设置正确的设置。您可以设置重写规则,如下例所示。 如果您使用的是apache:

<LocationMatch "^/vendor">
  RewriteRule . index.php [L]
</LocationMatch>

如果您使用的是nginx:

location /vendor {
  rewrite (.*) /index.php last;
}

答案 1 :(得分:0)

Codeigniter使用与许多应用程序相同的Apache mod_rewrite代码段:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

这两个条件首先检查是否存在具有所请求名称的文件(-f)或目录(-d)。只有当没有这样的文件或目录时,RewriteRule才会生效。因为你已经有了一个目录&#34; vendor&#34;你必须在另一个重写之前为该目录名设置一个例外:

RewriteCond %{REQUEST_FILENAME} ^vendor/.*
RewriteRule ^(.*)$ index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]