我没有让CodeIgniter 4正常工作的问题,使用CI 3.x在同一个Web服务器上运行其他应用程序也没有任何问题。我通过FAST_CGI与IIS一起安装了PHP 7.3.17。
我可以使用此uri http://dev.com/CI-4.0.3/public/查看欢迎消息。当我尝试http://dev.com/CI-4.0.3/pages/showme时,我不断得到
HTTP错误404.0-找不到-您正在寻找的资源已被删除,其名称已更改或暂时不可用。
我想念的是什么?任何建议都将不胜感激。
我将$baseURL
中的Config/App.php
更新为http://dev.com/CI-4.0.3/。
使用以下代码创建控制器Pages.php
:
class Pages extends BaseController {
public function showme($page = 'home'){
echo 'This page is '. $page;
echo view('templates/header');
echo view('pages/'.$page);
echo view('templates/footer');
}
}
在“我的视图”文件夹中,有一个包含以下文件的页面和模板文件夹:
我的web.config看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
HTTP错误404.0-找不到
您要查找的资源已被删除,名称已更改或暂时不可用。
详细的错误信息:
模块化IIS Web核心
Notification MapRequestHandler
Handler StaticFile
错误代码0x80070002
请求的URL http://dev.com:80/CI-4.0.3/index.php?url=pages/showme/home
物理路径C:\ inetpub \ wwwroot \ CI-4.0.3 \ index.php
匿名登录方法
登录用户匿名
当前的主要问题是web.config
-CodeIgniter不希望使用?url=
参数,也不会处理该参数。您可以在the bundled .htaccess
中看到它的期望-只需在.htaccess
之后附加URI。在此处检查SO(index.php/
,example,example)上的其他问题/答案,请尝试将操作更改为:
example
如果不起作用,只需复制链接的示例之一。
接下来,您的Web服务器的文档根目录应为<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
目录,为public/
。您的文档根目录设置为described in the docs。这不会停止您的应用程序的运行,但这确实意味着您的代码和敏感详细信息(包括CI-4.0.3/
中的密码等)已公开,并且可能公开可见。您不应该这样生产!
由于docroot问题,您的.env
也是错误的。它应该指向$baseURL
下可浏览的文件。在您的情况下,这表示public/
。