warum bekomme ich 404 not found?
ich programmiere gerade etwas mit php und wenn ich auf die seite gehe zum testen bekome ich denn fehler 404 obwohl die datei existiert
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).
In welchem Ordner/Verzeichnispfad liegt denn dein backend-Ordner?
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"
Bei XAMPP ist der htdocs-Ordner das Rootverzeichnis. Daher müsste deine Adresse http://localhost/phptube/backend/web/index.php?r=hello%2Findex lauten.
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.
Du musst noch das Routing umdefinieren, Default ist site/index, also als Default wird SiteController mit der index-Methode aufgerufen.
https://www.yiiframework.com/doc/guide/2.0/en/runtime-routing
ist wieder 404 not found