Laravel 5.5 pozybycie się public oraz index.php

Laravel 5.5 pozybycie się public oraz index.php
0

Hej,
nowy w L5 ... zainstalowałem nowiutki projekt i chciałbym się pozbyć url w stylu http://mojProjekt/public/index.php/login

mod_rewrite mam właczony.
Znalezłem na SO myk następujący:

  1. skopiuj .htaccess z public do root aplikacji
  2. zamień server.php na index.php

gdy zrobie np. php artisan make:auth
i url http://apka/login
dostaje Sorry, the page you are looking for could not be found.

tyle sie naczytałem jak to wykonać ale nic się nie sprawdza. Zarówno na Linuxie i win z xampp

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Ustaw w document root w Apache na katalog public.


czysteskarpety
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

htaccess:

Kopiuj
RewriteEngine On 
RewriteRule ^(.*)$ public/$1 [L]

lub/i w laravel_code/bootstrap/paths.php

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

0

jeszcze o jendym zapomnialem
aplikację mam w podkatalogu tzn. htdocs/NazwaProjektu

0

poniższy kod sprawia, że omijam tylko index.php.

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

RewriteEngine On
RewriteBase /nazwaAplikacji/
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

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

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Dlaczego nie ustawisz po prostu document root na katalog /var/www/htdocs/twoj-projekt/public tak, jak sugeruje każdy poradnik oraz dokumentacja Laravela?


0

co masz na myśli konkretniej?
moja aplikacja ma być w podkatalogu. Nie skonfigurowałem Virtual Hosta - nie chce.
Czy zmiana w apache DocumentRoot nie będzie obowiązywała globalnie?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Nie skonfigurowałem Virtual Hosta - nie chce.

Czyli sam sobie tworzysz problemy, z którymi teraz próbujesz dzielnie walczyć.
Rozwiązaniem Twojego problemu jest utworzenie wirtualnego hosta i ustawienie jego document root na katalog public Twojej aplikacji.


0

a powiedz wystarczy tylko ten virtual host + DocumentRoot ?
czy ruszam coś w projekcie?

czysteskarpety
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

ja robiłem też w ten sposób:
https://www.codementor.io/magarrent/how-to-install-laravel-5-xampp-windows-du107u9ji
akurat pod xampp, po wejściu w laravel.dev masz startową
spróbuj


0

tak to jest dokładnie to o czym wspomnial Patryk
Zrobiłem VHost i wszystko śmiga.
dzieki

0

Zawartość katalogu public powinna być zainstalowana jako ostatnia. Po instalacji wszystkich folderów i plików frameworka Laravel, należy zawartość katalogu public zainstalować w głównym katalogu aplikacji.

0

Czyli praktyka mówi np. (zależy od systemu) /var/www/html katalog główny apacza.

  • Do katalogu html wrzucamy tylko katalog public
  • Do katalogu www całą pozostałość Laravela
  • kreujemy VirtualHost z DocumentRoot ustawionym na katalog public
  • robimy wpis w /etc/hosts

Czy tak? Czy w przypadku separacji folderów frameworka musimy pokazać mu - zmienić gdzieś ścieżki?

0

Sorry, ale chyba nie rozumiem jakim cudem mozna uzyskac adres url: http://mojprojekt/public/index.php/login
Pierwszy raz spotykam się z takim problemem.
Instalacja Laravela na publicznym hostingu odbywa się poprzez composera, albo poprzez transfer plików z localnej maszyny na publiczny serwer za posrednictwem FTP. W tym drugim przypadku folder public nalezy przesłać na serwer jako ostatni, przyczym nalezy przesłac tylko zawartość folderu public i jezeli na hostingu (serwerze) działą wersja php jakiej wymaga Laravel, to po zakonczeniu instalacji wystarczy odwiedzic strone i powinno działac tak samo jak na localhost.

czysteskarpety
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

wszystko można, jak w większości frameworków php zlikwidować public, czy index, czy oba, możesz w htaccess, możesz w paths, możesz uzyskać przyjazne linki pod seo poprzez routes, opcji jest kilka, trzeba pokombinować jak zawsze


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.