Ich möchte die entfernen /public/ Fragment aus meinen Laravel 5 URLs.
Ich möchte keine VM ausführen, das scheint nur umständlich zu sein, wenn ich zwischen Projekten wechsele.
Ich möchte meinen Dokumentenstamm nicht auf den öffentlichen Ordner setzen, das ist auch umständlich, wenn ich zwischen Projekten wechsele.
Ich habe die Methode .htaccess mod_rewrite ausprobiert:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
aber das gibt mir eine Laravel NotFoundHttpException in der compiled.php-Zeile 7610.
In Laravel 4 konnte ich den Inhalt des öffentlichen Ordners in das Stammverzeichnis verschieben. Die Struktur von Laravel 5 ist ganz anders und nach den gleichen Schritten brach Laravel vollständig zusammen (der Server würde nur eine leere Seite zurückgeben).
Gibt es eine Methode zum Entfernen von „öffentlich“ in einer Entwicklungsumgebung, mit der ich problemlos zwischen Projekten wechseln kann (ich arbeite normalerweise an 2 oder 3 gleichzeitig)?
Ich verwende MAMP und PHP 5.6.2
Es scheint zu funktionieren, indem nur die Pfade in der Datei index.php geändert werden, aber ich bin neu bei Laravel und kann daher offensichtlich nicht kommentieren, ob dies stabil / sicher ist.
– Benutzer1537360
6. Februar 2015 um 13:06 Uhr
Die anderen Ordner/Dateien sollten sich unter Ihrem Dokumentenstamm befinden.
Die meisten Antworten auf dieser Seite sind unglaublich schlechte Praktiken. Die EINZIGE sichere Lösung ist, die zu ändern Dokument Root Ihres Webhosts als öffentlicher Ordner. Wenn Sie sich auf einem Server befinden, der nur den Ordner public_html veröffentlicht, löschen Sie diesen und erstellen Sie einen neuen symbolischen Link public_html, der auf den öffentlichen Laravel-Ordner verweist und diesen als Alias bezeichnet.
– Snapey
22. März 2022 um 22:32 Uhr
A public Ordner ist da, um im Dokumentstammverzeichnis verfügbar gemacht zu werden, und sonst nichts. Wenn Sie dies nicht tun, treten Sicherheitsprobleme zwischen dem privaten Speicher, auf den zugegriffen werden kann, der env-Datei und anderen sensiblen Dateien auf. Ändern Sie Ihren Dokumentenstamm!gibt es keinen triftigen Grund, dies nicht anderswo als in einer lokalen Umgebung zu tun, es ist, als würde man kein Passwort in der Datenbank hashen
– Tofandel
31. August 2022 um 10:25 Uhr
Asfaq Tamim
Hinweis: Dies führt zu erheblichen Sicherheitsproblemen und wird nicht empfohlen.
Für Laravel5:
Umbenennen server.php in Ihrem Laravel-Stammordner nach index.php
Kopiere das .htaccess Datei aus /public Verzeichnis in Ihren Laravel-Stammordner.
Bitte überprüfen Sie andere Antworten, indem Sie nur eine .htacess-Datei in Ihrem Stammverzeichnis erstellen, da diese Antwort vertrauliche Informationen (wie eine .env-Datei) offenlegen kann.
– Mauronet
21. November 2020 um 0:02 Uhr
Ihre Website ist für Hacker verfügbar, da die .env-Datei für alle sichtbar ist.
– Abd Abughazaleh
22. November 2020 um 11:27 Uhr
@AbdAbughazaleh Was ist, wenn Sie die Berechtigung für die .env-Datei auf 600 ändern?
– Mohammad Salehi
12. Mai 2022 um 9:13 Uhr
Derk Jan Speelman
BITTE BEACHTEN SIE wenn Sie ein Laravel-Projekt mit Docker bedienen: Sie müssen nichts davon tun. Verwenden Sie nur diese Option wenn Ihre Wurzel (oder häufiger: public_html)-Verzeichnis Ihrer Website ist Ihr Laravel-Projekt (dies ist nicht der Fall, wenn Sie Docker verwenden).
NICHT!
SIE SOLLTEN WIRKLICH NICHT umbenennen server.php in Ihrem Laravel-Stammordner nach index.php
und kopiere die .htaccess Datei aus der /public Verzeichnis in Ihren Laravel-Stammordner !!!
Auf diese Weise kann jeder auf einige Ihrer Dateien zugreifen (.env Zum Beispiel). Versuch es selber. Das willst du nicht!
TUN
Stattdessen sollten Sie eine erstellen .htaccess Datei in Ihrem Stamm wie folgt:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
Dadurch werden alle Ihre Basis-URIs stillschweigend in die umgeschrieben /public Ordner. Sogar alle ÜberschriftenZum Beispiel den HTTP-Autorisierungs-Headerund alle optionalen URI-Parameter werden stillschweigend an die weitergegeben /public Ordner auch.
@HaritsinhGohil treten Sie diesem Raum chat.stackoverflow.com/rooms/196804/laravel-and-htaccess bei, um unser Gespräch fortzusetzen
– Derk Jan Speelman
22. Juli 2019 um 11:16 Uhr
Hallo, @DerkJanSpeelman. Ich versuche, meine Laravel-Dateien in einen Unterordner in meinem Hosting hochzuladen, wie z. B.: (example.com/projects/laravel/blog). In diesem Fall müssen Besucher example.com/projects/laravel/blog/ besuchen. public, sodass ich eine .htaccess-Datei mit Ihrem Code im Stammverzeichnis des Blogordners ablege und möchte, dass sie in den öffentlichen Ordner umgeleitet wird. Aber es funktioniert nicht. Hier tritt der Fehler auf: Die angeforderte URL /public/ wurde auf diesem Server nicht gefunden. Wie kann ich das lösen?
– Schowan
21. August 2019 um 6:36 Uhr
@ShovonDas Wenn Sie Ihre Benutzer dazu bringen möchten, zu gehen example.com/projects/laravel/blog/. Erstellen Sie zuerst das Laravel-Projekt in der blog Ordner. Ersetzen RewriteCond %{REQUEST_URI} !^/public/ mit RewriteCond %{REQUEST_URI} !^/projects/laravel/blog/public/ Und RewriteRule ^(.*)$ /public/$1 [L,QSA] mit RewriteRule ^projects/laravel/blog/(.*)$ /projects/laravel/blog/public/$1 [L,QSA] ICH denken das funktioniert. Gib mir Bescheid. Der RewriteRule funktioniert wie: RewriteRule pattern target [Flag1,Flag2,Flag3]Apache RewriteRule-Dokumentation
@logudotcom Wenn Sie auf bestimmte statische Dateien auf Ihrer Website zugreifen möchten, müssen Sie ihnen Zugriff gewähren. Das geht mit htaccess. Ich empfehle dringend, sich die htaccess-Dokumentation anzusehen developer.mozilla.org/en-US/docs/Learn/Server-side/…
– Derk Jan Speelmann
2. Dezember 2021 um 9:47 Uhr
ka_lin
Ich habe das Problem mit 2 Antworten gelöst:
Umbenennen der server.php in index.php (keine Änderungen)
Kopieren Sie die .htaccess-Datei aus dem öffentlichen Ordner in den Stammordner (wie rimon.ekjon unten sagte)
Ändern Sie .htaccess für Statiken wie folgt ein wenig:
Falls es noch andere gibt statische Dateien benötigt, fügen Sie einfach die Erweiterung der zuvor deklarierten Liste hinzu
Das hat bei mir wie ein Knall funktioniert! Es löst im Grunde das Problem, dass keine Routen außer der Homepage funktionieren, und wenn Sie dann die Lösung von Derk ausprobieren, würde es funktionieren, aber nicht für alle Assets und Bilder. Dadurch wurden die Routen und auch die Assets und Bilder korrigiert. Vielen Dank. 🙂
– Leutecia
2. Januar um 16:35 Uhr
Erstellen Sie in Laravel 5.5 eine .htacess-Datei in Ihrem Stammverzeichnis und platzieren Sie den folgenden Code:- Referenzlink
Erstelle ein .htaccess Datei in Wurzel Verzeichnis und platzieren Sie Code wie unten. Dadurch kann Ihre .env-Datei jedoch weiterhin über eine URL aufgerufen werden, sodass sie nicht sicher ist.
Es funktioniert gut, aber die .env-Datei ist immer noch direkt über die URL zugänglich.
– Manoj Singh
19. Dezember 2019 um 9:13 Uhr
Einfache Möglichkeit, die Öffentlichkeit von der URL von Laravel 5 zu entfernen. Sie müssen nur index.php und .htaccess aus dem öffentlichen Verzeichnis ausschneiden und in das Stammverzeichnis einfügen, das ist alles und zwei Zeilen in index.php als ersetzen
Notiz: Die obige Methode ist nur für Anfänger gedacht, da sie möglicherweise Probleme beim Einrichten des virtuellen Hosts haben. Die beste Lösung besteht darin, den virtuellen Host auf dem lokalen Computer einzurichten und ihn auf das öffentliche Verzeichnis des Projekts zu verweisen.
Es funktioniert gut, aber die .env-Datei ist immer noch direkt über die URL zugänglich.
– Manoj Singh
19. Dezember 2019 um 9:13 Uhr
TylerH
Diese Antwort wird nicht empfohlen, da sie vom Anbieter bereitgestellte Dateien bearbeitet. Behandeln Sie es stattdessen über eine Änderung an Ihrem .htaccess Datei wird empfohlen.
Rimon Ekjon sagte:
Benennen Sie die server.php in Ihrem Laravel-Stammordner in index.php um und kopieren Sie die .htaccess-Datei aus dem /public-Verzeichnis in Ihren Laravel-Stammordner.
Dies funktionierte, aber als ich diese Änderung vornahm, konnten alle Ressourcendateien im /public-Verzeichnis nicht gefunden werden, und Anforderungs-URLs funktionierten nicht, weil ich einen asset()-Helfer verwendet habe.
Ich habe die Funktion /Illuminate/Foundation/helpers.php/asset() wie folgt geändert:
function asset($path, $secure = null)
{
return app('url')->asset("public/".$path, $secure);
}
Jetzt funktioniert alles wieder.
Dies ist keine gute Möglichkeit, dieses Problem zu lösen, da Sie versuchen, im Herstellerverzeichnis zu aktualisieren, was keine gute Vorgehensweise ist.
– Schadmann
25. Januar 2018 um 6:56 Uhr
Sie müssen nur hinzufügen RewriteRule ^(.*)$ public/$1 [L] in Ihrer .htaccess-Datei, die Sie aus dem öffentlichen Verzeichnis kopiert haben, indem Sie diese Zeile entfernen RewriteRule ^(.*)/$ /$1 [L,R=301]
– Schadmann
25. Januar 2018 um 7:17 Uhr
Wer ist Rimon Ekjon und wo haben Sie gesehen, wie sie dieses Zitat sagten?
– TylerH
11. April um 14:29 Uhr
14495000cookie-checkSo entfernen Sie /public/ von einer Laravel-URLyes
Es scheint zu funktionieren, indem nur die Pfade in der Datei index.php geändert werden, aber ich bin neu bei Laravel und kann daher offensichtlich nicht kommentieren, ob dies stabil / sicher ist.
– Benutzer1537360
6. Februar 2015 um 13:06 Uhr
Die anderen Ordner/Dateien sollten sich unter Ihrem Dokumentenstamm befinden.
– Mike Rockett
7. Februar 2015 um 18:04 Uhr
laravel öffentlich von url entfernen
– Benutzer3151197
27. September 2017 um 16:30 Uhr
Die meisten Antworten auf dieser Seite sind unglaublich schlechte Praktiken. Die EINZIGE sichere Lösung ist, die zu ändern Dokument Root Ihres Webhosts als öffentlicher Ordner. Wenn Sie sich auf einem Server befinden, der nur den Ordner public_html veröffentlicht, löschen Sie diesen und erstellen Sie einen neuen symbolischen Link public_html, der auf den öffentlichen Laravel-Ordner verweist und diesen als Alias bezeichnet.
– Snapey
22. März 2022 um 22:32 Uhr
A
public
Ordner ist da, um im Dokumentstammverzeichnis verfügbar gemacht zu werden, und sonst nichts. Wenn Sie dies nicht tun, treten Sicherheitsprobleme zwischen dem privaten Speicher, auf den zugegriffen werden kann, der env-Datei und anderen sensiblen Dateien auf. Ändern Sie Ihren Dokumentenstamm!gibt es keinen triftigen Grund, dies nicht anderswo als in einer lokalen Umgebung zu tun, es ist, als würde man kein Passwort in der Datenbank hashen– Tofandel
31. August 2022 um 10:25 Uhr