【问题标题】:route not work in CodeIgniter for others routes than home路线在 CodeIgniter 中不适用于家以外的其他路线
【发布时间】:2019-01-03 20:06:01
【问题描述】:

我正在尝试在 Kubuntu OS 下的 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'] = '';

最不寻常的事情是当我调用欢迎控制器时它起作用了。只有当我尝试调用其他控制器时才不起作用。喜欢http://localhost/cliente

感谢您的帮助。

【问题讨论】:

    标签: php codeigniter-3


    【解决方案1】:

    在 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 应用程序的路由规则。

    【讨论】:

    • 如果我按照你说的修改 /etc/apache2/sites-available/000-default.conf Apache 停止工作。
    • 我更改了文件中放置 de 块的位置,它可以工作。我被放在最后,在我放在顶部之后。非常感谢。
    • @LuisCarlosSilva .. 不客气,兄弟,在使用灯泡时需要考虑很多因素,因为必须手动设置很多配置,例如错误报告(即一个你以后会遇到的问题),无论如何..请考虑通过批准正确答案来结束这个问题。
    【解决方案2】:

    我怀疑您的 .htaccess 文件有问题。这是我的版本

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

    希望对您有所帮助,谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多