Codeigniter - 未指定输入文件 - 为什么是“?”解决这个问题了吗?

问题描述 投票:0回答:2

我的消息有问题

no input file specified

我在 stackoverflow 的主题上发现解决此更改

RewriteRule ^(.*)$ index.php/$1 [L]
RewriteRule ^(.*)$ index.php?/$1 [L]

在index.php后添加问号

并且成功了。

一切看起来都像:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

但是为什么这有效呢?在

index.php
之后添加的问号实际上是什么意思?为什么这会让一切正常?

我一直在寻找并搜索所有此类主题的答案,但没有找到任何可以回答我的问题的内容。

我只发现它

probably
可以工作并且是需要的,因为index.php不在根目录中,但我对此不确定。

我的目录如下:

/ (root folder)
--->application (app folder of framework)
--->myDomain.dx.am (my domain folder)
-------->index.php
-------->.htaccess (htaccess here)
-------->other_files
...................
--->system (system folder of framework)

我只寻求这个答案,我很好奇,我想知道为什么它有效以及如何工作?

php .htaccess codeigniter mod-rewrite
2个回答
0
投票
  1. 答案可能很长,因为这与两件主要事情有关。第一个是 Apache 服务器将浏览 URL 请求发送到 php 代码的方式。第二个是了解 CodeIgniter 的 MVC 架构以及路由。
  2. 大多数 mvc php 框架的入口点是 index.php 来处理路由请求。我们都知道漂亮 url 的重要性,并且我们尽量避免丑陋的路由 url,其中大部分都有控制器名称和方法(如果是 codeigniter 或任何其他 mvc)。
  3. 因此,即使我们有漂亮的 url,实际执行也是由扫描后面丑陋的 url 完成的。大多数情况下,我们在 codeigniter 4 的 Routes.php 文件中定义它们。因此,使用漂亮的 url 还可以处理来自用户或表单提交的浏览器 URl 请求,或者 api 是带有丑陋 url 和 urgly url 的服务器,它们具有 index.php 文件,并且有些得到和后置参数。我们总是有控制器名称和方法,控制器中要执行的函数是在符号“?”的帮助下给出的。和“&”
  4. 另一个因素是您的托管提供商所使用的 Apache 版本以及您的托管操作系统。

-1
投票

请执行以下步骤:

  1. 转到 application/config/config.php : 将

    $config['index_page'] = 'index.php';
    替换为
    $config['index_page'] = '';
    $config['uri_protocol']    = 'REQUEST_URI';
    $config['uri_protocol']   = 'AUTO';

  2. 通过
    启用重写模式

    sudo a2enmod rewrite
    然后
    service apache2 restart

  3. 如果您愿意,您可以使用以下 .htaccess 文件。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

© www.soinside.com 2019 - 2024. All rights reserved.