PHP - codeigniter URL无法在没有index.php的情况下工作 - 找不到对象

时间:2016-03-06 10:05:12

标签: php .htaccess codeigniter xampp

我在我的网站上使用codeigniter v3,而且我在从一个页面重定向到另一个页面时遇到了问题。

如果点击该标签,该链接会显示localhost:8080/IDS/view/decisiontree并显示Object not found! The requested URL was not found on this server...

如果我修改网址并将其设为localhost:8080/IDS/index.php/view/decisiontree,则网站会完美加载。

以下是我的路线:

$route['view/decisiontree'] = 'data_controller/goto_decisiontree';

以下是相关标签的代码:

<li><a href="<?php echo base_url();?>view/decisiontree">Decision Tree</a></li>

这是我的data_controller:

public function goto_decisiontree(){
    $data['page'] = "2";

    $this->load->view('decisiontree_page', $data);
}

这是我的config.php

$config['base_url'] = 'http://localhost:8080/IDS';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

这是我的.htaccess:

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

请注意,我使用的是Codeigniter V3。

非常感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

尝试以下

打开config.php并执行以下替换

$config['index_page'] = "index.php"

$config['index_page'] = ""

在某些情况下,uri_protocol的默认设置无效。只需替换

$config['uri_protocol'] ="AUTO"

通过

$config['uri_protocol'] = "REQUEST_URI"

<强> htaccess的

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

希望它有所帮助。

答案 1 :(得分:0)

在codeIgniter项目的主目录中尝试使用此htaccess。它似乎在xampp和wamp中工作正常。

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

的config.php

$config['base_url'] = 'http://localhost:8080/IDS/';
$config['index_page'] = "";
$config['uri_protocol'] = 'REQUEST_URI';

所有方法都记得您应该将文件名和类的第一个字母作为大写,其余的小写。 refer

更多htaccess示例here

答案 2 :(得分:0)

注意:我在Ubuntu上,因此如果您在另一个发行版上,则此处的路径可能会更改。

我尝试了所有.htaccess建议,但似乎没有一个起作用,所以我开始认为那不是问题。然后它打了我apache.conf文件。 .htaccess无关紧要,如果该文件限制了覆盖,则您无能为力。

所以我去了/etc/apache2/并编辑了apache2.conf文件,并添加了以下内容:

<Directory /var/www/html/your-project-folder>
    AllowOverride All
    Require all granted
</Directory>

也如上所述,将$config['index_page'] = index;中的$config['index_page'] = '';更改为application/config/config.php

顺便说一句,我的.htaccess文件如下所示:

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

别忘了重新启动apache。

答案 3 :(得分:0)

请尝试在config.php文件中将index_page设置为空白

$ config ['index_page'] =“”;

还请更改.htaccess文件:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]