我在我的网站上使用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。
非常感谢您的帮助!
答案 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]