2016-02-05 5 views
2

У меня есть этот HTML:Настройка URL-адреса с префиксом в Laravel

<ul> 
    <li><a href="index.php/Page1">Page 01</a></ 
    <li><a href="index.php/Page2">Page 02</a></li> 
    <li><a href="index.php/Page3">Page 03</a></li> 
</ul> 

Как вы можете видеть, я нужно использовать префикс index.php/ во всех звеньях связи с сервером моего университета
(я могу не меняйте его). Как это делается выше, он отлично работает, чтобы идти прямо из дома на любую страницу, но если я попытаюсь получить доступ к странице с другой страницы, я получаю неправильный URL-адрес и не могу получить доступ к странице:

Примеры:

Главная
http://localhost/php-project/public/

Page1 (из дома)
ОТ: http://localhost/php-project/public/
TO: http://localhost/php-project/public/index.php/Page1

Page2 (от дома)
ОТ: http://localhost/php-project/public/
К: http://localhost/php-project/public/index.php/Page2

Page1 (от Page2)
ОТ: http://localhost/php-project/public/index.php/Page2
К: http://localhost/php-project/public/index.php/index.php/Page1

как вы можете видеть , префикс повторяется. Я понятия не имею, как это сделать правильно.

Любые идеи?

+0

Ссылки относительны, вы, скорее всего, нужно использовать ' Karl

+0

@Karl Уже попробовал , Если я это сделаю, я получаю 'http: // localhost/index.php/import' и не могу получить доступ к странице, не имея« public/». – PlayHardGoPro

ответ

0

Это, как я решить мою проблему:

  • Я создал вспомогательную функцию на Laravel-х helper.php

function custom_url($routename) { return str_replace("index.php", "",URL($routename)); }

И используется так:

<ul> 
    <li><a href="{{custom_url('index.php/Page1')}}">Importar Histórico</a></li> 
    <li><a href="{{custom_url('index.php/Page2')}}">Alocar Disciplina</a></li>  
</ul> 
1

Вы можете использовать префикс маршрута.

Route::group(['prefix'=>'/index.php/'], function() 
{ 
    Route::get('/', ['as'=>home, 'uses'=>'[email protected]']); 
    //Include all your routes here. And in your view, link any page with the route name. 
    // eg: <a href="{{URL::route('home')}}"></a> 
}); 
+0

Он не заменяет префикс, он просто добавляет префикс для каждого клика; s – PlayHardGoPro

1

Вы можете установить его, используя метод forceRootUrl по классу Illuminate\Routing\UrlGenerator.

Пример:

// app/Providers/AppServiceProvider 
public function boot() 
{ 
    // Instance of Illuminate\Routing\UrlGenerator 
    $urlGenerator = $this->app['url']; 

    // Instance of Illuminate\Http\Request 
    $request = $this->app['request']; 

    // Grabbing the root url 
    $root = $request->root(); 

    // Add the suffix 
    $rootSuffix = '/index.php'; 
    if (!ends_with($root, $rootSuffix)) { 
     $root .= $rootSuffix; 
    } 

    // Finally set the root url on the UrlGenerator 
    $urlGenerator->forceRootUrl($root); 
} 
Смежные вопросы