各位先進好
小弟我的ci4只會呈現預設頁面,
已照官方的這篇文章故障排除 — CodeIgniter4 4.1.5 說明文件 (monkenwu.github.io)
進行修正後還是一樣,
不曉得要怎麼解決?
demo下載位置:
https://drive.google.com/file/d/18rWB3jKDJ1YEeCaykjc5qbJOHKD4btab/view?usp=sharing
Windows 11 + IIS + URL Rewirte
PHP 8.1.7
CodeIgniter 4 (透過composer安裝)
http://my.localhost.tw/Home/index
http://my.localhost.tw/Home/index2
皆為預設頁面
public $indexPage = 'index.php';
改成 public $indexPage = 'index.php?';
如果勾選紀錄重寫的URL的話log看起來也正常
app.defaultLocale = 'zh-TW'
app.appTimezone = 'Asia/Taipei'
app.baseURL = 'http://my.localhost.tw/'
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Index">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
只有改以下,其他預設
public $baseURL = 'http://my.localhost.tw';
public $indexPage = 'index.php?';
public $defaultLocale = 'zh-TW';
public $appTimezone = 'Asia/Taipei';
<?php
namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
return view('welcome_message');
}
public function index2()
{
return view('welcome_message2');
}
}
welcome_message.php 是ci4的預設頁面
welcome_message2.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to CodeIgniter 4!</title>
</head>
<body>
demo2
</body>
</html>
沒有,目前無解,
只好把XAMPP裝回來
首先,你得先了解是否有先做好RW規則的設定。
再來,你因該知道 index 是魔術函式。
是預設物件會運行的地方。
也就是說當你用 http://域名/ 會先找index運行。
但你要運行 index2 則是需要跑 http://域名/home/index2 的。
恩恩是的,預設 http://域名/
實際是 http://域名/Home/index
,會RW成http://域名/index.php?/Home/index
而 http://域名/Home/index2
,會RW成http://域名/index.php?/Home/index2
,iis log目前看起來是符合預期,但實際顯示卻還是預設頁面
$indexPage = 'index.php?'
改成
$indexPage = ''
試試
CI我很久沒玩了。記得跑RW時。
原先的index.php設定要改成空值或是 / 的樣子。
其實你的RW值就覺得怪怪的
改空值還是一樣,web.config是我copy網路上的,更新到文章了
web.config 原本是 index.php/{R:1}
,嘗試改成index.php?/{R:1}
還是不行
應該跟星空大說的一樣
我用CI3 利用 htaccess 來處理
您可以嘗試使用
http://my.localhost.tw/index.php/Home/index
http://my.localhost.tw/index.php/Home/index2
是否會正確顯示
再找看看去除index.php的rw語法
我有看到您的log 記錄了
嘗試使用cmd line
來測試執行狀況顯示的資料
還是結果其實只是很簡單得IIS 沒重啟而已
附上相關討論不知道能幫到您嗎
https://stackoverflow.com/questions/17676920/codeigniter-showing-only-default-controller