关注如何从CI3.0网址中删除index.php的另一个SO问题的步骤。一切正常,但其他页面现在抛出404。
之前的网址:domain.com/index.php/about.php 之后:domain.com/about.php< - 投掷404
然而,默认页面仍然有效,但是当我尝试导航到另一个页面时,404 ...
控制器:
<?php
class Pages extends CI_Controller
{
public function view($page = 'home')
{
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) {
show_404();
}
$data['title'] = ucfirst($page);
$this->load->helper('url');
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
路由器:
$route['default_controller'] = 'pages/view';
$route['about'] = 'pages/view/about';
$route['(:any)'] = 'pages/view/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
配置:
$config['index_page'] = '';
htaccess的:
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
答案 0 :(得分:0)
从使用CodeIgniter 3的第一天开始,我一直在使用以下.htaccess
文件删除index.php
。我从来没有遇到过URL。我觉得这可以帮到你。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
我有许多在线项目没有任何问题,但我对mod_rewrite没有完整的知识。
答案 1 :(得分:0)
如果您使用的是Ubuntu,请编辑文件/etc/apache2/apache2.conf(这里我们有一个/ var / www示例):
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
并将其更改为;
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
然后,
sudo a2enmod rewrite
重新启动apache servser
sudo service apache2 restart
我认为已经完成了。