Welcome Guest, Not a member yet? Register   Sign In
404 Can't find a route for 'get: home/test'
#1

Hi,
First of all, I am entirely new to this CI4, I have used CI3 in the past and had no issues.
I installed CI4 using Composer, and everything was great.
I have installed this new project in a folder name rapti.
I tried accessing my site, it worked using this URL http://localhost/rapti/public/

then to check I created a new function (test) in the default Controller Home and tried accessing the same with http://localhost/rapti/public/home/test
but then I got an error 
Quote:404 Can't find a route for 'get: home/test'.

PHP Code:
<?php

namespace App\Controllers;

class 
Home extends BaseController
{
    public function index()
    {
        return view('welcome_message');
    }
 
 public function 
test()
 {
 echo 
"This is Youtube";
 }




I tried creating another Controller Youtube and tried accessing that but no luck and the same error.
PHP Code:
<?php

namespace App\Controllers;

class 
Youtube extends BaseController
{
    public function index()
    {
        echo "This is Youtube";
    }


please guide me where I am wrong.
my .env file looks like this
Code:
#--------------------------------------------------------------------
# Example Environment Configuration file
#
# This file can be used as a starting point for your own
# custom .env files, and contains most of the possible settings
# available in a default install.
#
# By default, all of the settings are commented out. If you want
# to override the setting, you must un-comment it by removing the '#'
# at the beginning of the line.
#--------------------------------------------------------------------

#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------

CI_ENVIRONMENT = development

#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------

app.baseURL = 'http://localhost/'
# If you have trouble with `.`, you could also use `_`.
# app_baseURL = ''
# app.forceGlobalSecureRequests = false
# app.CSPEnabled = false


App.php file
PHP Code:
<?php

namespace Config;

use 
CodeIgniter\Config\BaseConfig;
use 
CodeIgniter\Session\Handlers\FileHandler;

class 
App extends BaseConfig
{
    /**
    * --------------------------------------------------------------------------
    * Base Site URL
    * --------------------------------------------------------------------------
    *
    * URL to your CodeIgniter root. Typically, this will be your base URL,
    * WITH a trailing slash:
    *
    *    http://example.com/
    */
    public string $baseURL 'http://localhost/rapti/';

    /**
    * Allowed Hostnames in the Site URL other than the hostname in the baseURL.
    * If you want to accept multiple Hostnames, set this.
    *
    * E.g. When your site URL ($baseURL) is 'http://example.com/', and your site
    *      also accepts 'http://media.example.com/' and
    *      'http://accounts.example.com/':
    *          ['media.example.com', 'accounts.example.com']
    *
    * @var string[]
    * @phpstan-var list<string>
    */
    public array $allowedHostnames = [];

    /**
    * --------------------------------------------------------------------------
    * Index File
    * --------------------------------------------------------------------------
    *
    * Typically this will be your index.php file, unless you've renamed it to
    * something else. If you are using mod_rewrite to remove the page set this
    * variable so that it is blank.
    */
    public string $indexPage '';

    /**
    * --------------------------------------------------------------------------
    * URI PROTOCOL
    * --------------------------------------------------------------------------
    *
    * This item determines which server global should be used to retrieve the
    * URI string.  The default setting of 'REQUEST_URI' works for most servers.
    * If your links do not seem to work, try one of the other delicious flavors:
    *
    * 'REQUEST_URI'    Uses $_SERVER['REQUEST_URI']
    * 'QUERY_STRING'  Uses $_SERVER['QUERY_STRING']
    * 'PATH_INFO'      Uses $_SERVER['PATH_INFO']
    *
    * WARNING: If you set this to 'PATH_INFO', URIs will always be URL-decoded!
    */
    public string $uriProtocol 'REQUEST_URI';

    /**
    * --------------------------------------------------------------------------
    * Default Locale
    * --------------------------------------------------------------------------
    *
    * The Locale roughly represents the language and location that your visitor
    * is viewing the site from. It affects the language strings and other
    * strings (like currency markers, numbers, etc), that your program
    * should run under for this request.
    */
    public string $defaultLocale 'en';

    /**
    * --------------------------------------------------------------------------
    * Negotiate Locale
    * --------------------------------------------------------------------------
    *
    * If true, the current Request object will automatically determine the
    * language to use based on the value of the Accept-Language header.
    *
    * If false, no automatic detection will be performed.
    */
    public bool $negotiateLocale false;

    /**
    * --------------------------------------------------------------------------
    * Supported Locales
    * --------------------------------------------------------------------------
    *
    * If $negotiateLocale is true, this array lists the locales supported
    * by the application in descending order of priority. If no match is
    * found, the first locale will be used.
    *
    * @var string[]
    */
    public array $supportedLocales = ['en'];

    /**
    * --------------------------------------------------------------------------
    * Application Timezone
    * --------------------------------------------------------------------------
    *
    * The default timezone that will be used in your application to display
    * dates with the date helper, and can be retrieved through app_timezone()
    */
    public string $appTimezone 'UTC';

    /**
    * --------------------------------------------------------------------------
    * Default Character Set
    * --------------------------------------------------------------------------
    *
    * This determines which character set is used by default in various methods
    * that require a character set to be provided.
    *
    * @see http://php.net/htmlspecialchars for a list of supported charsets.
    */
    public string $charset 'UTF-8';

    /**
    * --------------------------------------------------------------------------
    * URI PROTOCOL
    * --------------------------------------------------------------------------
    *
    * If true, this will force every request made to this application to be
    * made via a secure connection (HTTPS). If the incoming request is not
    * secure, the user will be redirected to a secure version of the page
    * and the HTTP Strict Transport Security header will be set.
    */
    public bool $forceGlobalSecureRequests false;

    /**
    * --------------------------------------------------------------------------
    * Session Driver
    * --------------------------------------------------------------------------
    *
    * The session storage driver to use:
    * - `CodeIgniter\Session\Handlers\FileHandler`
    * - `CodeIgniter\Session\Handlers\DatabaseHandler`
    * - `CodeIgniter\Session\Handlers\MemcachedHandler`
    * - `CodeIgniter\Session\Handlers\RedisHandler`
    *
    * @deprecated use Config\Session::$driver instead.
    */
    public string $sessionDriver FileHandler::class;

    /**
    * --------------------------------------------------------------------------
    * Session Cookie Name
    * --------------------------------------------------------------------------
    *
    * The session cookie name, must contain only [0-9a-z_-] characters
    *
    * @deprecated use Config\Session::$cookieName  instead.
    */
    public string $sessionCookieName 'ci_session';

    /**
    * --------------------------------------------------------------------------
    * Session Expiration
    * --------------------------------------------------------------------------
    *
    * The number of SECONDS you want the session to last.
    * Setting to 0 (zero) means expire when the browser is closed.
    *
    * @deprecated use Config\Session::$expiration instead.
    */
    public int $sessionExpiration 7200;

    /**
    * --------------------------------------------------------------------------
    * Session Save Path
    * --------------------------------------------------------------------------
    *
    * The location to save sessions to and is driver dependent.
    *
    * For the 'files' driver, it's a path to a writable directory.
    * WARNING: Only absolute paths are supported!
    *
    * For the 'database' driver, it's a table name.
    * Please read up the manual for the format with other session drivers.
    *
    * IMPORTANT: You are REQUIRED to set a valid save path!
    *
    * @deprecated use Config\Session::$savePath instead.
    */
    public string $sessionSavePath WRITEPATH 'session';

    /**
    * --------------------------------------------------------------------------
    * Session Match IP
    * --------------------------------------------------------------------------
    *
    * Whether to match the user's IP address when reading the session data.
    *
    * WARNING: If you're using the database driver, don't forget to update
    *          your session table's PRIMARY KEY when changing this setting.
    *
    * @deprecated use Config\Session::$matchIP instead.
    */
    public bool $sessionMatchIP false;

    /**
    * --------------------------------------------------------------------------
    * Session Time to Update
    * --------------------------------------------------------------------------
    *
    * How many seconds between CI regenerating the session ID.
    *
    * @deprecated use Config\Session::$timeToUpdate instead.
    */
    public int $sessionTimeToUpdate 300;

    /**
    * --------------------------------------------------------------------------
    * Session Regenerate Destroy
    * --------------------------------------------------------------------------
    *
    * Whether to destroy session data associated with the old session ID
    * when auto-regenerating the session ID. When set to FALSE, the data
    * will be later deleted by the garbage collector.
    *
    * @deprecated use Config\Session::$regenerateDestroy instead.
    */
    public bool $sessionRegenerateDestroy false;

    /**
    * --------------------------------------------------------------------------
    * Session Database Group
    * --------------------------------------------------------------------------
    *
    * DB Group for the database session.
    *
    * @deprecated use Config\Session::$DBGroup instead.
    */
    public ?string $sessionDBGroup null;

    /**
    * --------------------------------------------------------------------------
    * Cookie Prefix
    * --------------------------------------------------------------------------
    *
    * Set a cookie name prefix if you need to avoid collisions.
    *
    * @deprecated use Config\Cookie::$prefix property instead.
    */
    public string $cookiePrefix '';

    /**
    * --------------------------------------------------------------------------
    * Cookie Domain
    * --------------------------------------------------------------------------
    *
    * Set to `.your-domain.com` for site-wide cookies.
    *
    * @deprecated use Config\Cookie::$domain property instead.
    */
    public string $cookieDomain '';

    /**
    * --------------------------------------------------------------------------
    * Cookie Path
    * --------------------------------------------------------------------------
    *
    * Typically will be a forward slash.
    *
    * @deprecated use Config\Cookie::$path property instead.
    */
    public string $cookiePath '/';

    /**
    * --------------------------------------------------------------------------
    * Cookie Secure
    * --------------------------------------------------------------------------
    *
    * Cookie will only be set if a secure HTTPS connection exists.
    *
    * @deprecated use Config\Cookie::$secure property instead.
    */
    public bool $cookieSecure false;

    /**
    * --------------------------------------------------------------------------
    * Cookie HttpOnly
    * --------------------------------------------------------------------------
    *
    * Cookie will only be accessible via HTTP(S) (no JavaScript).
    *
    * @deprecated use Config\Cookie::$httponly property instead.
    */
    public bool $cookieHTTPOnly true;

    /**
    * --------------------------------------------------------------------------
    * Cookie SameSite
    * --------------------------------------------------------------------------
    *
    * Configure cookie SameSite setting. Allowed values are:
    * - None
    * - Lax
    * - Strict
    * - ''
    *
    * Alternatively, you can use the constant names:
    * - `Cookie::SAMESITE_NONE`
    * - `Cookie::SAMESITE_LAX`
    * - `Cookie::SAMESITE_STRICT`
    *
    * Defaults to `Lax` for compatibility with modern browsers. Setting `''`
    * (empty string) means default SameSite attribute set by browsers (`Lax`)
    * will be set on cookies. If set to `None`, `$cookieSecure` must also be set.
    *
    * @deprecated use Config\Cookie::$samesite property instead.
    */
    public ?string $cookieSameSite 'Lax';

    /**
    * --------------------------------------------------------------------------
    * Reverse Proxy IPs
    * --------------------------------------------------------------------------
    *
    * If your server is behind a reverse proxy, you must whitelist the proxy
    * IP addresses from which CodeIgniter should trust headers such as
    * X-Forwarded-For or Client-IP in order to properly identify
    * the visitor's IP address.
    *
    * You need to set a proxy IP address or IP address with subnets and
    * the HTTP header for the client IP address.
    *
    * Here are some examples:
    *    [
    *        '10.0.1.200'    => 'X-Forwarded-For',
    *        '192.168.5.0/24' => 'X-Real-IP',
    *    ]
    *
    * @var array<string, string>
    */
    public array $proxyIPs = [];

    /**
    * --------------------------------------------------------------------------
    * CSRF Token Name
    * --------------------------------------------------------------------------
    *
    * The token name.
    *
    * @deprecated Use `Config\Security` $tokenName property instead of using this property.
    */
    public string $CSRFTokenName 'csrf_test_name';

    /**
    * --------------------------------------------------------------------------
    * CSRF Header Name
    * --------------------------------------------------------------------------
    *
    * The header name.
    *
    * @deprecated Use `Config\Security` $headerName property instead of using this property.
    */
    public string $CSRFHeaderName 'X-CSRF-TOKEN';

    /**
    * --------------------------------------------------------------------------
    * CSRF Cookie Name
    * --------------------------------------------------------------------------
    *
    * The cookie name.
    *
    * @deprecated Use `Config\Security` $cookieName property instead of using this property.
    */
    public string $CSRFCookieName 'csrf_cookie_name';

    /**
    * --------------------------------------------------------------------------
    * CSRF Expire
    * --------------------------------------------------------------------------
    *
    * The number in seconds the token should expire.
    *
    * @deprecated Use `Config\Security` $expire property instead of using this property.
    */
    public int $CSRFExpire 7200;

    /**
    * --------------------------------------------------------------------------
    * CSRF Regenerate
    * --------------------------------------------------------------------------
    *
    * Regenerate token on every submission?
    *
    * @deprecated Use `Config\Security` $regenerate property instead of using this property.
    */
    public bool $CSRFRegenerate true;

    /**
    * --------------------------------------------------------------------------
    * CSRF Redirect
    * --------------------------------------------------------------------------
    *
    * Redirect to previous page with error on failure?
    *
    * @deprecated Use `Config\Security` $redirect property instead of using this property.
    */
    public bool $CSRFRedirect false;

    /**
    * --------------------------------------------------------------------------
    * CSRF SameSite
    * --------------------------------------------------------------------------
    *
    * Setting for CSRF SameSite cookie token. Allowed values are:
    * - None
    * - Lax
    * - Strict
    * - ''
    *
    * Defaults to `Lax` as recommended in this link:
    *
    * @see https://portswigger.net/web-security/csrf/samesite-cookies
    *
    * @deprecated `Config\Cookie` $samesite property is used.
    */
    public string $CSRFSameSite 'Lax';

    public bool $CSPEnabled false;


.htaccess file
Code:
# Disable directory browsing
Options -Indexes

# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------

# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

# If you installed CodeIgniter in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /

# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to the front controller, index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 index.php
</IfModule>

# Disable server signature start
ServerSignature Off
# Disable server signature end


file directory
https://iili.io/HO5d1LB.png
Reply
#2

You need to define a route for it.
See
https://codeigniter4.github.io/CodeIgnit...ml#routing
https://codeigniter4.github.io/CodeIgnit...ting-rules
Reply
#3

(04-04-2023, 06:09 PM)kenjis Wrote: You need to define a route for it.
See
https://codeigniter4.github.io/CodeIgnit...ml#routing
https://codeigniter4.github.io/CodeIgnit...ting-rules

Thank you Sir
a lot has changed in CI
Reply




Theme © iAndrew 2016 - Forum software by © MyBB