在CodeIgniter 3.0.3中链接无法单击

时间:2015-11-20 13:19:18

标签: codeigniter

我很困惑为什么这个链接不可点击或者在chrome中没有任何反应,并且在mozilla中返回错误,例如“地址未被理解”......

HTML标记正是这个

 <li><a href="<?php echo site_url('makers/create_makers')?>">Add new Makers</a></li>

反过来产生类似

的东西
   <li><a href="localhost:8089/makers/create_makers">Add new Makers</a></li>

奇怪的部分是添加'index'

    <li><a href="localhost:8089/makers/create_makers/index">Add new Makers</a></li>//works

这意味着我必须在为了工作而创建的每个链接中添加“索引”

控制器

  public function create_makers()
{
    $this->load->helper('form');
    $this->load->helper('url');

    $this->load->library('form_validation');

    $data['title'] = 'Add New Car Maker';
    $data['content'] = 'makers/create_makers';
    $data2['content']='makers/success';

    $this->form_validation->set_rules('name','name','required');
    $this->form_validation->set_rules('description','description','required');
    $this->form_validation->set_rules('nation_id','nation_id','required');

    if ($this->form_validation->run() === FALSE) 
    {
        $this->load->view('templates/layout', $data);
    } 
    else 
    {
        $this->makers_model->new_makers();

        $this->load->view('templates/layout',$data2');
    }

}

在config / config.php内部

 $config['base_url'] = 'localhost:8089';
  $config['index_page'] = 'index.php';//remove or not remove same still not working

路线

$route['makers/create_makers'] = 'makers/create_makers';
$route['default_controller'] = 'services/index';

.htaccess放在根文件夹(应用程序文件夹外)

  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule .* index.php/$0 [PT,L] 

我还试图删除htaccess并放入应用程序文件夹但单击链接时没有发生

但是,如果我手动添加一个尾随的“索引”,这将有效。

 localhost:8089/makers/create_makers//doesn't work
 localhost:8089/makers/create_makers/index //works!

我在Codeigniter中对此感到困惑

内部apache

 <VirtualHost *:80>
   #ServerAdmin webmaster@localhost
    DocumentRoot /var/www/CodeIgniter-3.0.3/
    #AcceptPathInfo On
    <Directory /var/www/CodeIgniter-3.0.3/>
      Options FollowSymLinks Indexes
      AllowOverride All
      Require all granted
    </Directory>
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    #ErrorLog ${APACHE_LOG_DIR}/error.log


    #ErrorLog ${APACHE_LOG_DIR}/error.log
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog /var/www/CodeIgniter-3.0.3/application/logs/error.log
    CustomLog /var/www/CodeIgniter-3.0.3/application/logs/access.log combined

启用mod_rewrite

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

让我们调整你的.htaccess并查看它是否有效

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

<Files "index.php">
 AcceptPathInfo On
</Files>  

删除配置文件中的index.php

$config['index_php']='';

根据codigniter docs

  

第一段中包含“journals”一词的网址将重新映射到“博客”类。

$route['journals'] = 'blogs';

所以我们在你的路线文件

中应用它
$route['makers/new_makers'] = 'makers/create_makers';

现在您的链接无需添加&#39;索引&#39; ..像

这样的东西
<li><a href="<?php echo site_url('makers/new_makers')?>">Add new Makers</a></li>

请记住,$ route [&#39;&#39;]内的网址应该映射到一个类及其方法。在这种情况下,网址

<?php echo site_url('makers/new_makers') ?>

将查看控制器Makers及其方法

 create_makers()

然后在视图文件夹的maker文件夹中呈现包含create_makers.php的视图。

答案 1 :(得分:0)

您必须在自动加载文件或控制器的构造中加载url帮助程序。

您的网址应如下所示:

<li><a href="http://localhost:8089/makers/create_makers">Add new Makers</a></li>

如果您没有http://它将无效。

此外,您必须将$config['base_url']留空并$config['index_page']