Wie kann ich „public/index.php“ in der generierten Laravel-URL entfernen? [duplicate]
Lesezeit: 9 Minuten
TuGordoBello
Ich muss entfernen index.php oder public/index.php von der generierten URL in Laravel; üblicherweise ist Pfad localhost/public/index.php/someWordForRouteEs sollte so etwas sein localhost/someWordForRoute.
Zeigt Ihr Dokumentstammverzeichnis auf den vorgesehenen Ordner, d. h /var/www/project_name/public
– Kiee
25. Okt. 2014 um 10:48
Luzan Baral
Option 1: Verwenden Sie .htaccess
Wenn sie noch nicht vorhanden ist, erstellen Sie eine .htaccess-Datei im Laravel-Stammverzeichnis. Ein … kreieren .htaccess Legen Sie Ihr Laravel-Stammverzeichnis ab, falls es noch nicht vorhanden ist. (Normalerweise liegt es unter Ihrem public_html Ordner)
Bearbeiten Sie die .htaccess-Datei so, dass sie den folgenden Code enthält:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Jetzt sollten Sie ohne den Teil „/public/index.php/“ auf die Website zugreifen können.
Option 2: Verschieben Sie Dinge im Verzeichnis „/public“ in das Stammverzeichnis
Erstellen Sie einen neuen Ordner in Ihrem Stammverzeichnis und verschieben Sie alle Dateien und Ordner mit Ausnahme des öffentlichen Ordners. Sie können es so nennen, wie Sie wollen. Ich verwende „laravel_code“.
Als nächstes verschieben Sie alles aus dem öffentlichen Verzeichnis in den Stammordner. Es sollte etwas Ähnliches ergeben:
Danach müssen wir nur noch die Standorte im bearbeiten laravel_code/bootstrap/paths.php Datei und die index.php Datei.
In laravel_code/bootstrap/paths.php Finden Sie die folgende Codezeile:
Wenn Sie Debian Linux verwenden, vergessen Sie nicht, es zu bearbeiten etc/apache2/apache2.conf wechselnd von AllowOverride None Zu AllowOverride All wo Sie die Verzeichniskonfiguration sehen, <Directory /var/www/></Directory> .
– Robin Hood
20. Januar 2015 um 15:21
Ich musste nur die .htaccess-Datei in meinem Stammverzeichnis haben, damit es funktionierte.
– Mário Rodrigues
4. Februar 2015 um 11:20 Uhr
Der Wechsel nach /root ist im Produktionsmodus überhaupt kein guter Rat! Es gibt einen Grund, warum der öffentliche Ordner existiert
– Zehenplatte
4. April 2015 um 7:44
Um sicherzustellen, dass die Rewrite-Regeln funktionieren, überprüfen Sie, ob die Apache-Konfiguration <Directory ... config hat AllowOverride All' Etwas wie das: <Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
– Japheth Ongeri – inkalimeva
20. Mai 2015 um 18:04
Auf keinen Fall. Tu das niemals.
– Daniel Steiner
30. Mai 2016 um 14:11 Uhr
Ich habe es auf Laravel 4.2 versucht
Benennen Sie die um server.php im Stammordner Ihres Laravel index.php und kopieren Sie die .htaccess Datei von /public Verzeichnis in Ihren Laravel-Stammordner.
Ich hoffe, es funktioniert
Wenn die von Luazan akzeptierte Antwort nicht funktioniert, reicht dies aus. Allerdings würde ich darauf achten, die Datei index.php im öffentlichen Ordner zu bearbeiten, um Benutzer aus dem öffentlichen Ordner umzuleiten, wenn sie direkt zu diesem Link gehen.
– Brad Bird
7. März 2015 um 9:21
Die JS- und CSS-Dateien werden nicht mehr aus dem öffentlichen Ordner geladen
– llioor
20. August 2015 um 22:27 Uhr
@MaHDyfo – warum ist es nicht sicher? und wie ?
– 151291
15. Juni 2018 um 17:31 Uhr
@151291, weil die .env-Datei für jeden zugänglich ist, der Ihre Website auf diese Weise besucht. es sei denn, Sie sichern Ihren Webserver, um dies zu vermeiden.
– Mahdyfo
18. Juni 2018 um 16:34
Ankit Vishwakarma
Lassen Sie sich nicht mit der anderen Option verwechseln. Das Snippet unten verwende ich und wird auch für Sie nützlich sein. Fügen Sie die folgenden htacces in Ihr Stammverzeichnis ein.
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Großartig: Können Sie mir sagen, welche Vor- und Nachteile diese Methode hat?
– Muhammad Ateek
6. September 2016 um 5:17 Uhr
Ich habe nur die .htaccess-Datei im Root (Ihr erstes Snippet) bearbeitet und das hat das Problem für mich behoben, danke!
– peird
28. Januar 2020 um 17:41 Uhr
In Laravel 9 ist dies die einzige Option
– Shalin Nipuna
11. März 2022 um 3:19
1) Überprüfen Sie, ob mod_rewrite aktiviert ist. Gehe zu /etc/apache2/mods-enabled Verzeichnis und prüfen Sie, ob die rewrite.load ist verfügbar. Wenn nicht, aktivieren Sie es mit dem Befehl sudo a2enmod rewrite.Dadurch wird das Rewrite-Modul aktiviert. Wenn es bereits aktiviert ist, wird die Meldung angezeigt Module rewrite already enabled.
2)Erstellen Sie einen virtuellen Host für das öffentliche Verzeichnis, anstatt ihn freizugeben http://localhost/public/index.php Wir werden es so nutzen können http://example.com/index.php. [hence public folder name will be hidded]
3) Erstellen Sie dann eine .htaccess-Datei, die die index.php vor Ihrer URL verbirgt, die sich im Stammverzeichnis (öffentlicher Ordner) befinden sollte.
In Laravel 4 ist Pfad 2 $app = require_once __DIR__.'/bootstrap/start.php'; anstatt $app = require_once __DIR__.'/bootstrap/app.php';/app.php
Das ist es.
Gibt es weitere Komplikationen im Zusammenhang mit anderen Links auf der Website?
– Haring10
7. Dezember 2015 um 9:56
Das sieht nach einer großartigen und auch einfachen Lösung aus. Aber wirklich, wie Haring10 sagte. Gibt es diesbezüglich Probleme?
– Peter
30. März 2016 um 9:21 Uhr
Udhav Sarvaiya
Für Laravel 4 und 5:
Umbenennen server.php in Ihrem Laravel-Stammordner nach index.php
Kopiere das .htaccess Datei von /public Verzeichnis zu Ihrem Laravel root-Verzeichnis.
Das ist es !! 🙂 🙂
Gibt es weitere Komplikationen im Zusammenhang mit anderen Links auf der Website?
– Haring10
7. Dezember 2015 um 9:56
Das sieht nach einer großartigen und auch einfachen Lösung aus. Aber wirklich, wie Haring10 sagte. Gibt es diesbezüglich Probleme?
– Peter
30. März 2016 um 9:21 Uhr
Gemeinschaft
Dies hat wahrscheinlich sehr wenig mit Laravel zu tun und alles mit Ihren Apache-Konfigurationen.
Haben Sie Zugriff auf Ihre Apache-Serverkonfiguration? Wenn ja, schauen Sie sich dies in den Dokumenten an:
Im Allgemeinen sollten Sie .htaccess-Dateien nur verwenden, wenn Sie keinen Zugriff auf die Hauptkonfigurationsdatei des Servers haben. Es gibt beispielsweise ein weit verbreitetes Missverständnis, dass die Benutzerauthentifizierung immer in .htaccess-Dateien erfolgen sollte, und in jüngerer Zeit ein weiteres Missverständnis, dass mod_rewrite-Direktiven in .htaccess-Dateien gespeichert werden müssen. Das ist einfach nicht der Fall. Sie können Benutzerauthentifizierungskonfigurationen in die Hauptserverkonfiguration einfügen, und dies ist tatsächlich die bevorzugte Vorgehensweise. Ebenso funktionieren mod_rewrite-Anweisungen in vielerlei Hinsicht besser in der Hauptserverkonfiguration.
… Generell sollte die Verwendung von .htaccess-Dateien nach Möglichkeit vermieden werden. Jede Konfiguration, die Sie in eine .htaccess-Datei einfügen möchten, kann genauso gut in einem Abschnitt Ihrer Hauptserverkonfigurationsdatei vorgenommen werden.
Der Grund, warum ich dies zuerst erwähne, ist, dass es am besten ist, es loszuwerden .htaccess vollständig, wenn Sie können, und verwenden Sie a Directory Tag in einem VirtualHost Schild. Abgesehen davon wird der Rest davon ausgehen, dass Sie dabei bleiben .htaccess Route aus welchem Grund auch immer.
Um dies aufzuschlüsseln, könnten ein paar Dinge passieren:
Ich stelle vielleicht sinnlos fest, dass Ihre Datei einen Namen hat .htacces in deiner Frage. Ich vermute, dass es sich um einen Tippfehler handelt, aber für den Fall, dass Sie ihn übersehen haben und tatsächlich nur das zweite s fehlt, handelt es sich genau um einen kleinen Fehler, der mich auf der Suche nach etwas Schwierigerem mit dem Kopf gegen die Wand schlagen würde .
Ihr Server könnte dies nicht zulassen .htaccess. Um dies zu überprüfen, gehen Sie zu Ihrer Apache-Konfigurationsdatei. In modernen Apache-Builds befindet sich dies normalerweise nicht in einer Konfigurationsdatei. Stellen Sie daher sicher, dass Sie die Datei verwenden, die auf Ihre App verweist, wo immer diese vorhanden ist. Ändern
AllowOverride none
Zu
AllowOverride all
Als Folgemaßnahme wird in den Apache-Dokumenten außerdem empfohlen, dies aus Sicherheitsgründen nicht für jeden Ordner zu tun, wenn Sie dies wünschen .htaccess zum Umschreiben. Führen Sie dies stattdessen für die Ordner aus, die Sie hinzufügen müssen .htaccess Zu.
Haben Sie mod_rewrite ermöglicht? Das könnte die Ursache für die Probleme sein. Mir ist aufgefallen, dass Sie das Tag oben haben <IfModule mod_rewrite.c>. Kommentieren Sie diese Tags aus und starten Sie Apache neu. Wenn Sie eine Fehlermeldung erhalten, liegt das wahrscheinlich daran, dass Sie die Funktion aktivieren müssen mod_rewrite: So aktivieren Sie mod_rewrite für Apache 2.2
Hoffe das hilft. Ich habe einige der häufigsten Probleme genannt, aber es gibt auch einige andere, die banaler oder einzigartiger sein könnten. Noch ein Vorschlag für einen Entwicklungsserver? Installieren Sie Apache neu. Wenn möglich, verwenden Sie dazu eine andere Quelle mit einem guten Tutorial.
Toller Haken für die Apache2-Konfigurationseinstellungen, ich vermisse diese Einstellung jedes Mal.
– Abhishek
18. Juni 2018 um 10:36 Uhr
14543700cookie-checkWie kann ich „public/index.php“ in der generierten Laravel-URL entfernen? [duplicate]yes
Hübsche URLs in Laravel. Stellen Sie sicher
mod_rewrite
aktiviert.– Kryten
23. Mai 2014 um 20:36
stackoverflow.com/questions/21662378/…
– Das Alpha
23. Mai 2014 um 20:39
@Kryten funktioniert nicht =/
– TuGordoBello
26. Mai 2014 um 19:13
Dies ist die Lösung, wenn die andere Lösung nicht funktioniert dev-metal.com/enable-mod_rewrite-ubuntu-14-04-lts
– TuGordoBello
28. Mai 2014 um 19:38
Zeigt Ihr Dokumentstammverzeichnis auf den vorgesehenen Ordner, d. h
/var/www/project_name/public
– Kiee
25. Okt. 2014 um 10:48