我很困惑为什么这个链接不可点击或者在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
感谢任何帮助
答案 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']
。