CodeIgniter 4-HTTP错误404.0-找不到

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

我没有让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-找不到-您正在寻找的资源已被删除,其名称已更改或暂时不可用。

我想念的是什么?任何建议都将不胜感激。

  1. 我将$baseURL中的Config/App.php更新为http://dev.com/CI-4.0.3/

  2. 使用以下代码创建控制器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');
        }
    }
    

在“我的视图”文件夹中,有一个包含以下文件的页面和模板文件夹:

  • Views / pages / home.php
  • Views / pages / aboutus.php
  • Views / templates / header.php
  • Views / templates / footer.php

我的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

匿名登录方法

登录用户匿名

php iis-express codeigniter-4
1个回答
0
投票
  • 当前的主要问题是web.config-CodeIgniter不希望使用?url=参数,也不会处理该参数。您可以在the bundled .htaccess中看到它的期望-只需在.htaccess之后附加URI。在此处检查SO(index.php/exampleexample)上的其他问题/答案,请尝试将操作更改为:

    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/

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