Laravel Кароткае кіраўніцтва маршрут не працуе

Добра, я пачатковец у Laravel так пайшоў прама да дакументацыі, каб пачаць працу. Ёсць вялізныя дзіркі ў дакументацыі, так што спатрэбілася шмат намаганняў і трошкі, каб запоўніць прабелы, каб атрымаць Laravel наладу. Цяпер у мяне ёсць ставіла і перайшоў да наступнага кроку ў хуткім старце guide.I стварыў свой маршрут

Route::get('users', function()
{
     return 'Users!';
});

Цяпер ён кажа:

Now, if you hit the /users route in your web browser, you should see Users!

Так што я ўдарыў уверх:

http://localhost/laravel/users 

але атрымаць 404? я спрабаваў

http://localhost/laravel/public/users 

але ўсё-ткі 404? Я ішоў інструкцыям на кароткім кіраўніцтве да ліста, што мне не хапае?

34
да я магу атрымаць доступ да старонцы прывітання «вы прыехалі» старонку па змаўчанні, па гэтым адрасе лакальны/Laravel/грамадскасць
дададзена аўтар twigg, крыніца
ды філ, які працуе
дададзена аўтар twigg, крыніца
ім Ubuntu працуе з Apache, калі гэта дапамагае любому, з модамі перапісваюць ўключана
дададзена аўтар twigg, крыніца
@PhillSparks вы можаце дапамагчы мне з гэтым пост ? і растлумачыць праблему кузен Я пачатковец і хочаце зразумець функцыянальнасць Laravel
дададзена аўтар Poula Adel, крыніца
Я сапраўды не разумею, чаму Laravel мае 450.000 загрузак (!), Але ніхто, акрамя нас, не мае гэтую праблему! падручнік Laravel з'яўляецца жудасна, калі вы робіце гэта так жа, як яны ж вы будзеце працаваць у дакладнасці гэтую памылку ...
дададзена аўтар Sliq, крыніца
я меў гэтую праблему і тое, што я прыйшоў да высновы, што сервер не атрымаў моды-рерайт актываваны.
дададзена аўтар Alexey, крыніца
Падобна на тое, ваш Htaccess/перазапіс не працуе тады. Tripple пераканайцеся, што вы моды перапісваюць ўключаны, і што вы атрымалі AllowOverride настроена правільна. Я б рэкамендаваў, што, перш чым занадта доўга вы глядзіце ў віртуальныя хасты таксама.
дададзена аўтар Phill Sparks, крыніца
Вы ўпэўненыя, што Laravel ёсць? Вы можаце атрымаць доступ да што-небудзь яшчэ ў грамадскіх месцах?
дададзена аўтар Phill Sparks, крыніца
Як наконт LOCALHOST/Laravel/грамадскіх/index.php/карыстальнікаў?
дададзена аўтар Phill Sparks, крыніца
Я проста перанесьці корань/публічна/.htaccess у корань/.htaccess і гэта працуе
дададзена аўтар Wasim A., крыніца

9 адказы

Падобна на тое, ваша прыкладанне Laravel з'яўляецца даступным праз псеўданім Apache HTTP, таму што ваш URL выглядае наступным чынам: HTTP://лакальны/Laravel/. Калі гэта так і мяркуючы, , што HTTP://лакальны/Laravel паказвае на агульнадаступным каталогу, а затым выканаеце наступныя дзеянні:

  1. Паспрабуйце перайсці да вашага меркаванага маршруце перад імем файла трэба /index.php/, у вашым выпадку: HTTP: //localhost/laravel/index.php/users , Калі ён працуе (не 404), то вы праблема з канфігурацыяй Rewrite модуль Apache HTTP, вы павінны выканаць наступныя крокі.
  2. Адрэдагуйце файл публічны/.htaccess .
  3. Пад радком RewriteEngine On дадаць RewriteBase/Laravel/.
  4. Паспрабуйце перайсці да існуючага маршруту.

У прынцыпе, калі вы прыкладанне знаходзіцца ў псеўданіма або віртуальнага каталога (скажам, HTTP://лакальны/псеўданім ), вы павінны дадаць запіс у правіле перапісвання перапісаць базавы каталог з псеўданім .

70
дададзена
Прывітанне Рубенс, я думаю, цяпер я атрымліваю блізка ад гэтага. лакальны/Laravel/index.php/карыстальнікі dosn't праца, але калі я стаўлю грамадскасць URL-адрас, ён працуе як і лакальны/Laravel/грамадскія/index.php/карыстальнікаў RewriteBase не працаваў, але ім адгадаць я павінен недзе ўключаць публічны каталог/у яго?
дададзена аўтар twigg, крыніца
Яна працуе для Laravel 4.2 + WAMP + кропак псеўданім тэчкі + карыстацкі порт 7777. Так што RewriteBase па змаўчанні, калі мы не паказваем яго?
дададзена аўтар Emerald Hieu, крыніца
Вы карыстаецеся WAMP? Затым перайдзіце на абразок у трэі> націсніце> Apache> Аліяс каталогі> Дадаць псеўданім ... затым запісаць псеўданім, як тэст Набор каталог як C: \ шлях \ да \ ваш \ грамадскасць \ каталог затым перайдзіце да HTTP://лакальны/тэст .
дададзена аўтар Rubens Mariuzzo, крыніца
Гэта было вельмі карысна. У мяне было пытанне вы апісалі.
дададзена аўтар wolfdawn, крыніца
Гэта дакладнае рашэнне. Я спрабаваў шмат і знайсці рашэнне ў мінулым. Вялікі дзякуй
дададзена аўтар sujivasagam, крыніца
Пераканайцеся, што mod_rewrite у httpd.conf уключаны. См stackoverflow.com/a/16864142/1532882 .
дададзена аўтар Mark W, крыніца
Гэта дакладнае рашэнне ( RewriteBase ... ) працаваў на маёй ўсталёўцы Laravel пад WAMP. Мой псеўданім /лакальны/Laravel-дэманстрацыйны/ Thx.
дададзена аўтар Dizzley, крыніца
Гэта не працуе для мяне. Я ў канчатковым выніку таго, каб стварыць віртуальны хост.
дададзена аўтар yaz, крыніца
Мне трэба ўсталяваць AllowOverride у усе для каталога псеўданім знаходзіцца.
дададзена аўтар Axel, крыніца

Apache ня верагодна, чытанне грамадскасці/.htaccess файл з-за дырэктывы <�моцны> AllowOverride быць усталяваны ў становішча <�моцны> None . Паспрабуйце ўсталяваць яго <�моцны> Усе .

Laravel 4 simple route not working using mod_rewrite, and .htaccess

4
дададзена

Праблема добра тлумачыцца Рубенса вышэй, Больш простае рашэнне заключаецца ў выкарыстанні пастаўляецца убудаваны ў PHP сервер, выканаўшы гэтую каманду

php artisan serve --port=8080

Звярніце ўвагу, што я выкарыстоўваю порт 8080 тут, вы можаце апусціць it.Now вы можаце праглядаць сайт, перайшоўшы ў

localhost/users

і ён павінен працаваць!

3
дададзена

мой папярэдні пост з Describtion праблемы быў выдалены, але гэта было падобна на сітуацыю, якая апісана тут.

у любым выпадку ... проста я выпрабаваў усе магчымасці, апісаныя тут, а таксама на іншых старонках, і я не знайшоў рашэнне маёй праблемы.

Свежая ўстаноўка Laraval проста не працавала .... пасля спробы Everythink з гэтым постам я вырашыў стварыць яшчэ адну новую ўстаноўку і цуд адбылося гэта ўстаноўка на самай справе працуе ...

Так што мая парада: калі вы не ў стане вырашыць гэтую праблему, паспрабуйце стварыць яшчэ адну ўстаноўку Laravel і гэта можа рэальна працаваць.

Гэта можа быць на самой справе самым простым спосабам, як вырашыць вашу праблему ў выпадку, калі вы пачынаеце з Scrach.

3
дададзена

I had the same problem and spent hours to solve it. I have several apps under the same domain, but in different segments. So Laravel's url is http://myhostname/mysubdir/

My controllers were only working as http://myhostname/mysubdir/index.php/mycontroller

На /var/www/.../public/.htaccess я стаўлю RewriteBase/mysubdir і працаваў !!!

2
дададзена

Я ведаю, што гэтае пытанне 4-х гадоў, але да гэтага часу яна ёсць яго significance.Rubens Mariuzzo адказалі правільна, але я хачу дадаць некалькі кропак на ёй. Ты сказаў

«Ёсць велізарныя дзіркі ў дакументацыі, так што спатрэбілася шмат намаганняў і трошкі, каб запоўніць прабелы, каб атрымаць Laravel наладку"

Для пачаткоўцаў гэта цяжка знайсці правільны спосаб налады Laravel. Пасля таго, як ён асвоіў гэта весела развіваецца Laravel :). Ёсць пэўны правільны спосаб зрабіць гэта.

  1. Спампаваць Laravel
  2. <�Літый> Налада БД </літый>
  3. Карта DB ў .env
  4. Зрабіце Auth: PHP майстравых марка: Auth
  5. Стварэнне мадэлі і міграцыі разам: PHP рамеснік робіць: мадэль Todo -m
  6. Міграцыя: PHP рамеснік мігруе
  7. Стварэнне кантролера і маршрутаў разам: PHP майстравых маркі: кантролер TodoController --resource
  8. Стварыць прадстаўленне для кожнага дзеяння
  9. Код кантролер

Detailed description is given in this blog http://masterlaravel.blogspot.in/2017/08/laravelquick-start-composer-create.html

0
дададзена

Дзякуючы. Веданне вышэй па @rubens, і каментар па @GaryJ тут прымусіў мяне зрабіць гэта, каб прымусіць яго працаваць з маім віртуальнымі хастамі файла Apache.

Скапіяваў гэтыя радкі з файла .htaccess у Laravel ў вузле канфігурацыі ВХосты. Выдалены мой файл .htaccess (ён у любым выпадку не ўжываецца, я на вокнах Apache віртуальнага хаста, Laravel акр)

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]

лепш: Пазней прачытаў @ адказ Ag0r0 «s, які працаваў. я прапускаў дазволіць пераазначэнне, робячы вышэй неабходнага. калі AllowOverride усё было там, налады па змаўчанні сам працаваў.

0
дададзена

In my case (Ubuntu 14.04 LTS & Apache 2.2) I was stuck at #1 step of @Rubens' solution. I could see the page with this url: http://localhost/laravel/index.php/users but step #2 and others didn't work.

Акрамя таго, я спрабаваў дадаць RewriteBase/Laravel/публічны у .htaccess , але ён не працуе занадта.

Then I've set up a new virtual host with the help of this awesome tutorial: https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts (they rock with these tuts)

Акрамя падручніка, я ўсталяваў DocumentRootexample.com.conf файл), як гэта:

DocumentRoot /var/www/laravel/public

Так, публічны гэта вялікая справа тут.

Дарэчы, не стаўце RewriteBase/Laravel/ у свой .htacces файл у адваротным выпадку вы атрымаеце HTTP/500 памылкі.

Цяпер я магу бачыць, example.com/users стар.

0
дададзена

Калі ласка, звярніцеся да гэтай наступнай URL і паглядзець канфігурацыі RoboTamer у:

http://forums.laravel.io/viewtopic.php?id=511

гэта вырашыць маю праблему гэтак жа, як ваша

Рашэнне ў Nginx:

сервер {

    server_name .laravel.dev;
    root /home/tamer/code/laravel/public;

    index index.php index.html;

    #browse folders if no index file
    autoindex on; 

    # serve static files directly
    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
        access_log off;
        expires max;
    }

    # removes trailing slashes (prevents SEO duplicate content issues)
    if (!-d $request_filename)
    {
        rewrite ^/(.+)/$ /$1 permanent;
    }

    # enforce NO www
    if ($host ~* ^www\.(.*))
    {
        set $host_without_www $1;
        rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
    }


    # canonicalize codeigniter url end points
    # if your default controller is something other than "welcome" you should change the following
    if ($request_uri ~* ^(/lobby(/index)?|/index(.php)?)/?$)
    {
        rewrite ^(.*)$/permanent;
    }

    # removes trailing "index" from all controllers
    if ($request_uri ~* index/?$)
    {
        rewrite ^/(.*)/index/?$ /$1 permanent;
    }

    # unless the request is for a valid file (image, JS, css, etc.), send to bootstrap
    if (!-e $request_filename)
    {
        rewrite ^/(.*)$ /index.php?/$1 last;
        break;
    }

    # catch all
    error_page 404 /index.php;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/tmp/php.socket;
        fastcgi_index index.php;
        #include fastcgi_params;
        include /home/tamer/code/nginx/fastcgi_params;
    }
    access_log /home/tamer/code/laravel/storage/logs.access.log;
    error_log  /home/tamer/code/laravel/storage/logs.error.log;

}

0
дададзена
Калі ласка, абагульняць адказ тут, у выпадку, калі сайт пераходзіць у аўтаномным рэжыме.
дададзена аўтар Evan, крыніца
Заўвага: звязаная артыкул апісвае рашэнне для ўстаноўкі пад Nginx. Рубенс адказ добры для Apache.
дададзена аўтар Dizzley, крыніца