无法从 Ubuntu 的 Codeigniter 中删除 index.php
Cannot remove index.php from Codeigniter for Ubuntu
我关注的最后一个在这里How to remove index.php from codeigniter in UBUNTU [duplicate]
我有一个这样的控制器:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
public function index()
{
$this->load->view('login.html');
}
}
当我通过此 URL 访问它时:http://localhost/homerent/Login
,我得到 404 未找到。
我从上面的回答中参考 link
- $config['index_page'] = '';
- 重启apache2服务:sudo /etc/init.d/apache2 reload
将以下代码添加到/var/www/html/my_ci_site/.htaccess
RewriteEngine on
RewriteBase /
RewriteCond !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html)
RewriteRule ^(.*)$ index.php/ [L]
在/etc/apache2/apache2.conf
中将AllowOverride None
的每个实例替换为AllowOverride All
- 启用重写模式:
sudo a2enmod rewrite
- 最后再次重启apache2服务。
毕竟,我再次访问我的 url http://localhost/homerent/Login
我仍然得到 404 未找到。
我不知道这有什么问题。
在Ubuntu 你必须做虚拟主机才能工作。
为此,首先在 /etc/apache2/sites-available
中创建 yourproject.conf
文件(可能您可能需要 root 权限使用 sudo
命令)
为此在终端
cd /etc/apache2/sites-available
然后
sudo nano yourproject.conf
复制以下内容并粘贴进去
<VirtualHost *:3434>
ServerName localhost
DirectoryIndex index.php
DocumentRoot /var/www/html/yourprojectfolder
<Directory "/var/www/html/yourprojectfolder">
Options All
AllowOverride All
Allow from all
</Directory>
</VirtualHost>
注意:您可以在此处使用不同的端口
然后运行
sudo nano /etc/apache2/ports.conf
在此文件中添加行(不要编辑现有端口)
Listen 3434
然后运行
sudo a2ensite yourproject.conf
sudo a2enmod rewrite
在config.php
$config['base_url'] = 'http://localhost:3434';
$config['uri_protocol'] = 'REQUEST_URI';
$config['index_page'] = '';
在 yourproject
文件夹中创建 .htaccess,内容如下
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/ [L]
然后重启apache使修改生效
现在您可以通过 url http://localhost:3434
访问您的站点(这将加载默认控制器)并且无需在 url[=26= 中添加项目文件夹]
例如 http://localhost/homerent/Login
是现在使用的 url 和
设置虚拟主机后
您可以使用 http://localhost:3434/Login
我关注的最后一个在这里How to remove index.php from codeigniter in UBUNTU [duplicate]
我有一个这样的控制器:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
public function index()
{
$this->load->view('login.html');
}
}
当我通过此 URL 访问它时:http://localhost/homerent/Login
,我得到 404 未找到。
我从上面的回答中参考 link
- $config['index_page'] = '';
- 重启apache2服务:sudo /etc/init.d/apache2 reload
将以下代码添加到
/var/www/html/my_ci_site/.htaccess
RewriteEngine on RewriteBase / RewriteCond !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html) RewriteRule ^(.*)$ index.php/ [L]
在/etc/apache2/apache2.conf
中将- 启用重写模式:
sudo a2enmod rewrite
- 最后再次重启apache2服务。
AllowOverride None
的每个实例替换为AllowOverride All
毕竟,我再次访问我的 url http://localhost/homerent/Login
我仍然得到 404 未找到。
我不知道这有什么问题。
在Ubuntu 你必须做虚拟主机才能工作。
为此,首先在 /etc/apache2/sites-available
中创建 yourproject.conf
文件(可能您可能需要 root 权限使用 sudo
命令)
为此在终端
cd /etc/apache2/sites-available
然后
sudo nano yourproject.conf
复制以下内容并粘贴进去
<VirtualHost *:3434>
ServerName localhost
DirectoryIndex index.php
DocumentRoot /var/www/html/yourprojectfolder
<Directory "/var/www/html/yourprojectfolder">
Options All
AllowOverride All
Allow from all
</Directory>
</VirtualHost>
注意:您可以在此处使用不同的端口
然后运行
sudo nano /etc/apache2/ports.conf
在此文件中添加行(不要编辑现有端口)
Listen 3434
然后运行
sudo a2ensite yourproject.conf
sudo a2enmod rewrite
在config.php
$config['base_url'] = 'http://localhost:3434';
$config['uri_protocol'] = 'REQUEST_URI';
$config['index_page'] = '';
在 yourproject
文件夹中创建 .htaccess,内容如下
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/ [L]
然后重启apache使修改生效
现在您可以通过 url http://localhost:3434
访问您的站点(这将加载默认控制器)并且无需在 url[=26= 中添加项目文件夹]
例如 http://localhost/homerent/Login
是现在使用的 url 和
设置虚拟主机后
您可以使用 http://localhost:3434/Login