我正在尝试在Kubuntu O.S.下的localhost中运行CodeIgniter。 对于主URL(http://localhost),它可以正常工作。但是,当我尝试访问另一个URL(http://localhost/cliente)时,他说“在此服务器上找不到请求的URL / cliente。”。
我的.htaccess文件:
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
routes.php文件:
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['cliente'] = 'clientes';
$route['produto'] = 'produtos';
在application / controllers文件夹中有Clientes.php和Produtos.php文件。
在config.php中:$ config ['index_page'] ='';
最不寻常的是,当我调用Welcome控制器时,它起作用了。只有在我尝试调用其他控制器时才起作用。像http://localhost/cliente。
感谢您的帮助。
答案 0 :(得分:0)
在Linux上使用lamp
与在Windows上使用xampp
有点不同,您必须手动启用一些设置。
您的重写规则将不起作用,因为默认情况下mod_rewrite
被禁用,您必须先启用它。
步骤1-启用mod_rewrite
为了让Apache理解重写规则,我们首先需要激活mod_rewrite
。它已经安装,但是在默认的Apache安装中已禁用。使用a2enmod
命令启用该模块:
sudo a2enmod rewrite
这将激活模块或警告您该模块已启用。要使这些更改生效,请重新启动Apache。
sudo systemctl restart apache2
mod_rewrite
现在已完全启用。在下一步中,我们将建立一个.htaccess
文件,用于定义重定向的重写规则。
第2步-设置.htaccess
.htaccess
文件使我们可以修改重写规则,而无需访问服务器配置文件。因此,.htaccess
对Web应用程序的安全性至关重要。文件名之前的句点可确保文件被隐藏。
默认情况下,Apache禁止使用.htaccess
文件来应用重写规则,因此首先您需要允许对该文件进行更改。使用nano或您喜欢的文本编辑器打开默认的Apache配置文件。
sudo nano /etc/apache2/sites-available/000-default.conf
在该文件中,您会发现从第一行开始的<VirtualHost *:80>
块。在该块内部,添加以下新块,以便您的配置文件如下所示。确保所有块都正确缩进。
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
. . .
</VirtualHost>
保存并关闭文件。要使这些更改生效,请重新启动Apache。
sudo systemctl restart apache2
现在,在Web根目录中创建一个.htaccess
文件。
sudo nano /var/www/html/.htaccess
在新文件的顶部添加此行以激活重写引擎。
/var/www/html/.htaccess
RewriteEngine on
保存文件并退出。
您现在有了一个可操作的.htaccess
文件,可用于管理Web应用程序的路由规则。
答案 1 :(得分:0)
我怀疑您的.htaccess文件有问题。这是我的版本
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
希望这会有所帮助,谢谢。