warum bekomme ich 404 not found?

2 Antworten

Deine Projektstruktur und der Code sehen soweit richtig aus. Schau also erst einmal, ob du die Seite folgendermaßen aufrufen kannst:

http://localhost:8080/backend/web/index.php?r=hello%2Findex

Ich gehe davon aus, dass das klappt und du nun nur noch Pretty URLs aktivieren musst.

Dafür gibt es im Konfigurationsskript config/web.php eine Sektion, die standardmäßig noch auskommentiert ist:

'urlManager' => [
  'enablePrettyUrl' => true,
  'showScriptName' => false,
  'rules' => [
  ],
],

Entferne die Kommentardelimiter und füge dann noch eine .htaccess-Datei in deinem Projektverzeichnis hinzu, die Rewrite Rules für deinen Apache Server definiert:

RewriteEngine on

# prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)
RedirectMatch 403 /\..*$
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php

Anschließend solltest du deine Seite über:

http://localhost:8080/backend/web/hello/index

aufrufen können.

Weitere Änderungen an der Domain würde ich erst vornehmen, sobald es über localhost sicher klappt (es sei denn, du kannst jetzt schon sicher verifizieren, dass deine gesetzte Domain die localhost-Adresse ersetzen kann).

SusgUY446 
Fragesteller
 02.03.2024, 09:20
0
regex9  02.03.2024, 09:22
@SusgUY446

In welchem Ordner/Verzeichnispfad liegt denn dein backend-Ordner?

0
SusgUY446 
Fragesteller
 02.03.2024, 09:23
@regex9

root

"   Directory: C:\xampp\htdocs\phptube

Mode                LastWriteTime        Length Name

----                -------------        ------ ----

d-----         3/1/2024  3:50 PM               .github

d-----        2/27/2024  7:20 PM               backend

d-----        2/27/2024  7:20 PM               common

d-----        2/27/2024  7:20 PM               console

d-----        2/27/2024  7:20 PM               docs

d-----        2/27/2024  7:20 PM               environments

d-----        2/27/2024  7:20 PM               frontend

d-----        2/27/2024  7:20 PM               vagrant

d-----        2/27/2024  7:37 PM               vendor

-a----        2/27/2024  7:20 PM            46 .bowerrc

-a----        2/27/2024  7:20 PM           224 .gitattributes

-a----        2/27/2024  9:16 PM           487 .gitignore

-a----         3/2/2024  9:21 AM           301 .htaccess

-a----        2/27/2024  7:20 PM           180 codeception.yml

-a----        2/27/2024  7:20 PM          2031 composer.json

-a----        2/27/2024  7:20 PM        202950 composer.lock

-a----        2/27/2024  7:20 PM           901 docker-compose.yml

-a----        2/27/2024  7:20 PM         10550 init

-a----        2/27/2024  7:20 PM           334 init.bat

-a----        2/27/2024  7:20 PM          1553 LICENSE.md

-a----        2/27/2024  7:20 PM          3122 README.md

-a----        2/27/2024  7:20 PM          5951 requirements.php

-a----        2/27/2024  7:20 PM          3002 Vagrantfile

-a----        2/27/2024  9:30 PM           741 yii

-a----        2/27/2024  7:20 PM           338 yii.bat

-a----        2/27/2024  9:30 PM           956 yii_test

-a----        2/27/2024  9:30 PM           343 yii_test.bat"

0
regex9  02.03.2024, 09:55
@SusgUY446

Hast du denn, bis auf das Anlegen von Controller und View noch andere Änderungen vorgenommen?

Nach einer Standardinstallation via Composer

composer create-project --prefer-dist yiisoft/yii2-app-basic your-project-name

z.B. unter c:/xampp/htdocs/your-project-name kann das Projekt via http://localhost:<your-port>/your-project-name/web.index.php aufgerufen werden. Laut deinem Screenshot sollte das bei dir auch der Fall sein. Die bestehenden Unterseiten (wie About) werden über den SiteController ausgespielt, also http://localhost:<your-port>/your-project-name/web.index.php?r=site%2Fabout (r = Route bestehend aus Controllername und Actionname).

Eine Differenz, die ich noch sehe, ist der Namespace in deinem Controller. Per Standard (s. SiteController) sollte der app\controllers heißen, da die Controllerklasse sonst nicht auffindbar ist. Eigene Namespaces müssten erst registriert werden.

0
SusgUY446 
Fragesteller
 02.03.2024, 13:01
@regex9

also in SiteController.php ist es auch ```namespace backend/controllers```

0