it-swarm.com.de

Laravel 4 public von der URL entfernen

Also, ich führe xampp unter Windows aus. Ich versuche gerade, mich mit dem Laravel-Rahmen vertraut zu machen. Nun, wenn darauf hingewiesen wird. Wie kann ich auf meine Laravel-Anwendung/Website direkt innerhalb der Root zugreifen?

Beispiel,

  • Was ich jetzt mache ist: localhost/laravel/public/about (um die About-Seite zu sehen) 
  • Was ich tun möchte, ist: localhost/laravel/about

Gibt es gute Lösungen dafür? muss ich eine .htacess-Datei im Stammverzeichnis von laravel hinzufügen? (nicht der Öffentlichkeit).

Irgendwelche Vorschläge?

16
Kevin Jolan

Am einfachsten erstellen Sie eine .htaccess-Datei in Ihrem Laravel -Stamm mit folgendem Inhalt:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Es sollte leicht umgeleitet werden. 

Reference:https://coderwall.com/p/erbaig/laravel-s-htaccess-to-remove-public-from-url

12
Nirmal Garia

So habe ich es gemacht.

  1. Bearbeiten Sie Ihre Windows-Hostdatei - C:\Windows\System32\drivers\etc\hosts
  2. Bearbeiten Sie die Apache vhosts-Datei - Laufwerkbuchstabe:\xampp\Apache\conf\extra\httpd-vhosts.conf
  3. Hinzufügen einer htaccess-Datei zum Ordner laravel/public (falls noch nicht vorhanden)
  4. Starten Sie den Xampp-Apache-Server neu

Windows kann aufgrund der Benutzerkontensteuerung eine echte PITA sein, wenn Sie versuchen, die Hosts-Datei zu bearbeiten. Da ich an kleinen Hobbyprojekten aller Art arbeite, muss ich diese Datei ständig bearbeiten, also mache ich das.

  • Installieren Sie PSPad. Es wird sehr schnell geladen und Sie können Dateien zum einfachen Laden/Bearbeiten mit einem Lesezeichen versehen. Sublime Text funktioniert auch gut, wenn Sie die beiden oben genannten Dateien laden und den Arbeitsbereich als neues Projekt speichern.
  • Klicken Sie mit der rechten Maustaste auf die Programmverknüpfung PSPad (oder einen anderen Editor) und wählen Sie 'Als Administrator ausführen'. Sie können Änderungen an der Hosts-Datei nur speichern, wenn Sie dies tun.
  • Öffnen Sie die Windows-Host-Datei im Editor. Diese Datei hat keine Dateierweiterung. Daher müssen Sie im Dialogfeld "Datei öffnen" "Alle Dateien" auswählen, um die Datei sogar sehen zu können.
  • Fügen Sie am Ende der Datei Folgendes hinzu:

    127.0.0.1  laravel.dev
    

    Dadurch wird Windows angewiesen, den Webbrowser auf localhost zu verweisen, wenn Sie laravel.dev in die Adressleiste des Browsers eingeben.

  • Speicher die Datei.
  • Öffnen Sie die Apache-Datei httpd-vhosts.conf von xampp.
  • Fügen Sie am Ende der Datei Folgendes hinzu: (Ich gehe davon aus, dass xampp im Stammverzeichnis des Laufwerks D: installiert ist.)

    <VirtualHost *:80>
      ServerName laravel.dev
      DocumentRoot "D:/xampp/htdocs/laravel/public"
      <Directory "D:/xampp/htdocs/laravel/public">
      </Directory>
    </VirtualHost>
    
  • Fügen Sie Ihrem Ordner "Laravel/Public" eine htaccess-Datei hinzu (falls noch nicht vorhanden). Ich denke, die mit L4 gelieferte Standard-Htaccess-Datei sieht folgendermaßen aus:

    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
  • Starten Sie Ihren xampp-Apache-Server neu.
  • Öffnen Sie einen Webbrowser und geben Sie die Adressleiste ein - http://laravel.dev
  • Dadurch gelangen Sie zur Datei index.php im Ordner "public".
  • Um zur Info-Seite zu gelangen, denke ich, wäre die Adresse http://laravel.dev/about
11
HomeSlice

BEST Approch : Ich werde das Entfernen von public nicht empfehlen. Stattdessen erstellen Sie auf einem lokalen Computer einen virtuellen Host-Punkt für das öffentliche Verzeichnis. Bei einem Remote-Hosting ändern Sie public in public_html und verweisen Ihre Domäne auf dieses Verzeichnis. Grund dafür ist, dass Ihr gesamter Laravel-Code sicher ist, da er eine Ebene bis zu Ihrem öffentlichen Verzeichnis ist :)

METHODE 1: Ich benenne server.php einfach in index.php um und es funktioniert

VERFAHREN 2:

Hier ist meine Verzeichnisstruktur,

/laravel/
... app
... bootstrap
... public
... etc

Folgen Sie diesen einfachen Schritten

  1. alle Dateien aus dem öffentlichen Verzeichnis nach root/laravel/verschieben
  2. jetzt kein öffentliches Verzeichnis erforderlich, optional können Sie es jetzt entfernen
  3. Öffnen Sie jetzt index.php und nehmen Sie folgende Ersetzungen vor 

erfordernDIR. '/ ../bootstrap/autoload.php'; 

zu 

erfordernDIR. '/ bootstrap/autoload.php'; 

und

$ app = required_onceDIR. '/ ../bootstrap/start.php'; 

zu

$ app = required_onceDIR. '/ bootstrap/start.php';

  1. Öffnen Sie nun bootstrap/paths.php und ändern Sie den Pfad zum öffentlichen Verzeichnis:

'public' =>DIR. '/ ../public',

zu

'public' =>DIR. '/ ..',

und das ist es, jetzt versuchen Sie http: // localhost/laravel /

10
Wasim A.

Verschieben Sie den Inhalt des Ordners/public eine Ebene nach unten.

Sie müssen die Include-Zeilen in index.php aktualisieren, um auf die richtige Position zu verweisen. (Wenn es eine Stufe niedriger ist, entfernen Sie das '../').

10
gan

Legen Sie als Dokumentstammverzeichnis für Apache den Öffentlichen Ordner und nicht den Laravel-Ordner fest. Dies ist die einfachste Technik und wird für Produktionsumgebungen empfohlen.

9
Gaurav Gupta

Ich benutze L5, das funktioniert gut für mich:

  1. Benennen Sie die server.php in Ihrem Laravel - Stammverzeichnis in index.php um
  2. kopieren Sie die Datei .htaccess aus dem Verzeichnis/public in Ihren Laravel -Ordner.

- Thatz es !!!

4
X-Coder

Fügen Sie der htaccess-Datei den folgenden Code hinzu. Es kann dir helfen.

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
3
Mahendra Jella

Ich habe auch mit diesem Problem zu kämpfen, aber ich habe eine einfache Lösung gefunden, bei der Sie lediglich einen weiteren .htaccess im Stammverzeichnis Ihrer Anwendung erstellen müssen.

Der .htaccess selbst sollte folgendes enthalten:

RewriteEngine On

RewriteCond %{HTTP_Host} ^{yoursite}.{extension} [NC]
RewriteRule (.*) http://www.{yoursite}.{extension}/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

Das gesamte System funktioniert weiterhin, aber es wird in den Ordner/public umgeleitet.

So habe ich das Problem für mich gelöst.

Ich hoffe es hilft!

Prost.

3
Marnix

Fügen Sie folgenden Code in Ihrem .htaccess hinzu (falls nicht vorhanden, erstellen Sie einen .htaccess im Laravel-Stammverzeichnis)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Quelle: http://tutsnare.com/remove-public-from-url-laravel/

bei Source erhalten Sie auch eine andere Methode, um dasselbe zu tun.

Update: Die bevorzugte Methode ist die Änderung der Verzeichnisstruktur, die die Quell-URL erklärt. 

3
Vishal Tarkar

nur in einem einfachen schritt habe ich in laravel 5 .htaccess so in laravel ordner gemacht

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

    RewriteEngine On
    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ ./index.php [L]
</IfModule>

benennen Sie dann Ihren server.php in index.php um.

dass es funktionieren wird

oder wenn Sie nur lokale Entwicklung tun

führen Sie diesen Befehl aus php artisan serve 

es startet den lokalen Server um localhost:8000 (Port kann variieren)

3
ddw147

Wenn Sie sich nicht mit der Konfiguration der .htaccess -Datei befassen möchten, können Sie den eingebauten Server PHP folgendermaßen verwenden:

  1. Von Ihrem Befehlsdienstprogramm aus cd in laravel\public
  2. Der Lauf: php -S localhost:8000

Nachdem Sie auf Ihre Website zugreifen können, gehen Sie zu:

http:://localhost:8000

funktioniert ohne Anhängen von public

Weitere Informationen finden Sie im offiziellen Handbuch: http://php.net/manual/de/features.commandline.webserver.php

2
Digitlimit

Ich habe festgestellt, dass der Fluss mit Laravel lokal funktioniert.

Sie können xampp etwas konfigurieren. In der httpd.conf -Datei Ihres xamp müssen Sie das Dokument DocumentRoot und <Directory> finden. Ändern Sie das Stammverzeichnis in Ihren öffentlichen Laravel-Ordner und starten Sie Apache neu. Seit wann können Sie einfach auf Ihr Projekt zugreifen, indem Sie nur localhost eingeben. Wenn Sie möchten, können Sie Ihre Host-Datei ändern und lokale DNS-Dateien umschreiben, zum Beispiel: 127.0.0.1 example.laravel.com. Jetzt können Sie mit realer URL auf Ihr Projekt zugreifen. Es mag etwas kompliziert aussehen, ist es aber nicht.

Eine Alternative dazu wäre php artisan serve. Sie können den Server an verschiedenen Ports starten und die Hosts-Datei erneut schreiben.

Sie können einige Funktionen hinzufügen, um Ihren Workflow noch weiter zu verbessern, beispielsweise vagrant oder ngrok. Sie können Ihr Projekt für die Live-Präsentation freigeben (hier kann Geschwindigkeit auftreten).

2
Evaldas Butkus

Gehen Sie zum Projektordner mit cmd und geben Sie "php artisan serve" ..__ ein. Navigieren Sie nun zu: localhost: 8000

2
user3617691

Sie können Symlinks verwenden oder die httpd.conf-Datei bearbeiten.

Überprüfen Sie meine Antwort zu einer ähnlichen Frage. Ich hoffe das es hilft.

2
tolgamorf

Sie müssen folgende Dinge tun:

  1. kopieren Sie zunächst den gesamten Inhalt des öffentlichen Verzeichnisses in Ihr Stammverzeichnis, d. h. 

  2. Ändern Sie den Inhalt von index.php

Von =>

require __DIR__ . "/../bootstrap/autoload";
$app = require_once __DIR__ . "/../boostrap/start.php"

Bis => 

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

und auch den Inhalt von bootstrap/paths.php

Von => 'public' => __DIR__.'/../../',

To => 'public' => __DIR__.'/..',

3. Erstellen Sie schließlich .htaccess file in Ihrem Stammverzeichnis und schreiben Sie dies.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
1
Prabal Pradhan

benennen Sie server.php in index.php um und kopieren Sie .htaccess aus /public den richtigen Weg . Wenn Sie Ihre App online senden, ändern Sie DocumentRoot einfach in den öffentlichen Pfad.

1
ZhiJia Tang

Öffentliches Segment in der larvel4-App entfernen müssen

Für Laravel 4 müssen Sie Ihren App-Code um eine Stufe höher als das Web-Stammverzeichnis festlegen. Dies führt bei einigen Entwicklern zu Problemen, die beim Shared Hosting stecken bleiben und ein solches Setup nicht zulassen. Es ist eigentlich ganz einfach, das zu umgehen. Ich habe gelesen, dass einige L4-spezifische Pakete Probleme mit einem solchen Setup haben könnten, aber ich habe mit keinem Paket so etwas erlebt.

Installieren Sie also zuerst L4 an einem beliebigen Ort. Ich mochte den Artikel, den Niall schrieb, als er die Basis-L4-App auf dem neuesten Stand hielt. Schauen Sie sich das an: Installiere und aktualisiere Laravel 4

Ich finde, es genügt für dieses Beispiel, das Repo einfach zu klonen (vorausgesetzt, Sie haben Composer global installiert. Wenn nicht, gehen Sie zu http://getcomposer.org/ ):

git clone -b develop git://github.com/laravel/laravel.git app_name

pHP Composer installieren

Beachten Sie, dass wir den Entwicklungszweig klonen, da sich L4 zu diesem Zeitpunkt noch im Beta-Stadium befindet.

Um den "öffentlichen" Teil von Ihrer URL zu entfernen, verschieben Sie einfach alle Dateien und Ordner von "public" in Ihr App-Stammverzeichnis. Anschließend erhalten Sie eine Ordnerstruktur wie diese:

/app
/bootstrap
/packages (copied from /public)
/vendor
.htaccess (copied from /public)
artisan
composer.json
favicon.ico (copied from /public)
index.php (copied from /public)
robots.txt (copied from /public)
server.php

Jetzt müssen wir unsere Pfade in index.php bearbeiten:

require __DIR__.'/bootstrap/autoload.php';

$app = require_once __DIR__.'/bootstrap/start.php';

Und dann setzen Sie einfach das öffentliche Verzeichnis in die Datei out /bootstrap/paths.php:

'public' => __DIR__.'/..',

das ist meine suggession

Einfache Schritte zu befolgen:

  1. Benennen Sie server.php (im Stammverzeichnis) in index.php um.
  2. Kopieren Sie die .htaccess-Datei aus dem öffentlichen Verzeichnis in das Stammverzeichnis
1

wenn Sie public aus der URL entfernen, verschieben Sie zunächst die Dateien index.php und .htaccess aus dem Ordner public in das Stammverzeichnis der Datei laravel und ändern Sie die Datei index.php 

erfordern DIR. '/ ../bootstrap/autoload.php'; $ app = required_once DIR. '/ ../bootstrap/start.php';

zu

erfordern DIR. '/ bootstrap/autoload.php'; $ app = required_once DIR. '/ bootstrap/start.php';

und führen Sie das Programm aus

0
Jalpesh Khakhi

Das wurde schon oft gefragt. Ich hatte das gleiche Problem. Ich habe es mit vhosts und .htaccess-Dateien gelöst. Ich wollte über die Lösung sowohl auf XAMPP unter Windows als auch auf der LAMP-Installation unter Ubuntu schreiben. Meine Konfiguration unter Windows: Mein Ziel war es, meine Bewerbung durch Eingabe der folgenden URI zu erreichen 

http://localhost/subdir

c:\xampp\htdocs\subdir\ # this was laravel root directory
c:\xampp\Apache\conf\extra\httpd-vhosts.conf # this virtual hosts file

Ich habe die ursprüngliche .htaccess-Datei von der Laravel - Website verwendet (und denken Sie daran, dass sich die .htaccess-Datei im öffentlichen Verzeichnis befinden muss)

RewriteBase /subdir (just below RewriteEngine On)

Außerdem sollten Sie in der Datei httpd-vhosts Ihren Alias ​​für das Unterverzeichnis wie folgt hinzufügen:

Alias /subdir
"C:/xampp/htdocs/subdir/public"
<Directory "C:/xampp/htdocs/subdir/public">
  Order allow,deny
  Allow from all
  Options All
  AllowOverride All
  Require all granted
</Directory>

Hoffe, mit meiner Erklärung ist alles klar. Diese Antwort lässt sich problemlos auf Unix-basierte Systeme anwenden.

0
Emre Kayikcilar