Laravel 5 – Öffentlich von der URL entfernen

Lesezeit: 6 Minuten

Laravel 5 – Offentlich von der URL entfernen
Benutzer1537360

Ich weiß, dass dies eine sehr beliebte Frage ist, aber ich konnte keine funktionierende Lösung für Laravel 5 finden. Ich habe lange versucht, von Codeigniter zu migrieren, aber dieser komplizierte Installationsprozess schreckt mich immer wieder ab.

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>

Dies gibt mir nur eine Laravel NotFoundHttpException in der compiled.php-Zeile 7610.

Als ich L4 vor einiger Zeit ausprobiert habe, habe ich die Methode verwendet, den Inhalt des öffentlichen Ordners in das Stammverzeichnis zu verschieben. Die Struktur von L5 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 anständige Methode zum Entfernen von “öffentlich” in einer Entwicklungsumgebung, die:

  1. Funktioniert mit L5
  2. Ermöglicht es mir, problemlos zwischen Projekten zu wechseln (normalerweise arbeite ich an 2 oder 3 gleichzeitig).

Danke

** Ich verwende MAMP und PHP 5.6.2

  • Die Ordnerstruktur in der Anleitung ist anders als meine, ich nehme an, er verwendet L5 nicht? Ich habe die Änderungen, die er an der Bootstrap/Paths-Datei vorgenommen hat, ausgelassen, da sie nicht existiert. Das Projekt scheint aber zu funktionieren. Denkst du das ist in Ordnung?

    – Benutzer1537360

    6. Februar 2015 um 11:37 Uhr

  • Mein Fehler ließ mich eine Antwort für L5 hinzufügen

    – kamlesh.bar

    6. Februar 2015 um 11:41 Uhr

  • kein Erfolg beim Versuch

    – kamlesh.bar

    6. Februar 2015 um 12:06 Uhr


  • 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 5 – Offentlich von der URL entfernen
Derk Jan Speelmann


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 Mappe. Sogar alle Überschriftenzum Beispiel den HTTP-Autorisierungs-Headerund alle optionalen URI-Parameter werden stillschweigend an die weitergegeben /public Ordner auch.

Das ist alles

  • Es funktioniert gut in der Produktion, aber es funktioniert nicht lokal, irgendein Vorschlag?

    – Haritsinh Gohil

    22. Juli 2019 um 6:11 Uhr

  • Das funktioniert perfekt! local und server danke für sicherheitshilfe!

    – Ghanshyam Nakiya

    9. August 2019 um 13:10 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?

    – Shovon Das

    21. August 2019 um 6:36 Uhr

  • Diese Antwort wird unterschätzt. Upvoted für Bold und hervorgehoben Don’t. Es funktioniert absolut gut.

    – Varun Ved

    9. Oktober 2019 um 17:10 Uhr


  • Die perfekte Antwort

    – Mansur Alnasser

    30. Dezember 2019 um 14:01 Uhr

Erstellen Sie in Laravel 5.5 eine .htacess-Datei in Ihrem Stammverzeichnis und platzieren Sie den folgenden Code:- Referenzlink

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php

</IfModule>

  • die beste antwort! der einzige, der in meinem Beispiel funktioniert hat, sollte definitiv mehr Up-Votes haben

    – FiliusBonacci

    26. April 2018 um 14:27 Uhr

  • Danke, das ist Arbeit für mich. Aber ich möchte wissen, ob es Sicherheitsprobleme gibt oder nicht.

    – Rahul Singh Chauhan

    2. August 2018 um 5:58 Uhr


  • Was bedeutet diese Regel RewriteRule ^ ^$1 [N]tun?

    – gonzo

    30. September 2018 um 10:02 Uhr

  • auf verkettete Ansichtsressourcen, wie z. B. ein Dashboard mit einem Admin.etwas.etwas, das nicht funktioniert. Müssen Änderungen an der Routendatei vorgenommen werden?

    – Luis Wynne

    1. Juni 2019 um 15:18 Uhr

  • @LuizWynne schau dir meine Antwort an

    – Derk Jan Speelmann

    1. August 2019 um 9:21 Uhr

1646962450 96 Laravel 5 – Offentlich von der URL entfernen
Udhav Sarvaiya

Schaffen .htaccess Datei in Wurzel Verzeichnis und platzieren Sie Code wie unten.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php
</IfModule>

  • die beste antwort! der einzige, der in meinem Beispiel funktioniert hat, sollte definitiv mehr Up-Votes haben

    – FiliusBonacci

    26. April 2018 um 14:27 Uhr

  • Danke, das ist Arbeit für mich. Aber ich möchte wissen, ob es Sicherheitsprobleme gibt oder nicht.

    – Rahul Singh Chauhan

    2. August 2018 um 5:58 Uhr


  • Was bedeutet diese Regel RewriteRule ^ ^$1 [N]tun?

    – gonzo

    30. September 2018 um 10:02 Uhr

  • auf verkettete Ansichtsressourcen, wie z. B. ein Dashboard mit einem Admin.etwas.etwas, das nicht funktioniert. Müssen Änderungen an der Routendatei vorgenommen werden?

    – Luis Wynne

    1. Juni 2019 um 15:18 Uhr

  • @LuizWynne schau dir meine Antwort an

    – Derk Jan Speelmann

    1. August 2019 um 9:21 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

require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

NotizHinweis: 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.

  • Danach wird CSS nicht geladen, bcoz alle CSS sind öffentlich und die Öffentlichkeit wird aus der URL entfernt

    – Herr Tomar

    1. Oktober 2016 um 5:04 Uhr

  • Sie können “public/” beim Laden vor die js- oder css-Dateien setzen, zB Html::script(“public/js/…..”); –Aber die beste Lösung wäre ein virtueller Host …

    – Muhammad Sadiq

    3. Oktober 2016 um 7:07 Uhr

989520cookie-checkLaravel 5 – Öffentlich von der URL entfernen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy