Маршрут Laravel, указывающий вне каталога проекта - PullRequest
0 голосов
/ 24 мая 2019

Итак, я новичок в Laravel.У меня есть проект с именем Блог, созданный с помощью Composer и размещенный внутри WWW сервера Wamp.

Я использую следующие маршруты

Route::get('/', function () {
    return view('welcome');
});

Route::get('/contact', function () {
    return view('contact');
});

Route::get('/about', function () {
    return view('about');
});

Вот код, который я использую в layout.blade.php в папке views.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/about">About</a></li>
        <li><a href="/contact">Contact</a></li>
    </ul>
</body>
</html>

После того, как я нажму Home, я получу http://localhost Как я могу убедиться, что это приведет к http://localhost/blog/public

Кроме того, какскрыть папку public из url?

Я изменил файл .env на эти

APP_URL=http://localhost/blog/public/

мысли?куда я иду не так?Спасибо

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Назначить имя для маршрутов

Route::get('/contact', function () {
    return view('contact');
})->name('contact');

И используйте глобальную функцию route в вашем блейде

<li><a href="{{route('contact')}}">Contact</a></li>
1 голос
/ 24 мая 2019

Когда вы нажимаете

<li><a href="/">Home</a></li>

, эффективный URL-адрес в apache принимается равным http://localhost/

, чтобы правильно перенаправить, вам нужно использовать любой из названных маршрутов route('name')или используйте url() helper,

<li><a href="{{ url('/') }}">Home</a></li>

или, если используете именованный маршрут, тогда вам сначала нужно будет определить именованный маршрут

Route::get('/', function () {
    return view('welcome');
})->name('home');

<li><a href="{{ route('home') }}">Home</a></li>

Также, если вы хотите скрыть общедоступныйиз вашего URL, либо вы можете установить свой проект таким образом, чтобы ваша общая папка была корневой папкой ваших серверов.Кроме того, вы можете переместить ваши index.php и .htaccess из папки `/ public 'в корневой каталог ваших приложений.Также не забудьте отредактировать index.php, чтобы он указывал на правильные autoload.php, а app.php

измените это значение

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

на

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

Если вашjs и css throw 404, затем использовать asset() помощник с public

<script src="{{ asset('public') }}/js/main.js">
...