Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 29.03.2016 21:37:12

Как создать путь в роуте с index.php?

Мне нужно такой путь сделать index.php/название поста.
Но когда в роуте прописываю вот так  Route::get('/index.php/{slug}', 'IndexController@post');
Отображается в браузере No input file specified.

Скажите как настроить htaccess? или это не в нём дело!

Не в сети

#2 31.03.2016 16:07:24

Re: Как создать путь в роуте с index.php?

Route::get('/{slug}',       ['as' => 'post.show', 'uses' => 'IndexController@post']);

такое сработает для просто сайт/{slug} и для сайт/index.php/{slug}

Не в сети

#3 02.04.2016 12:03:37

Re: Как создать путь в роуте с index.php?

не понял что вы имеете ввиду. можно подробней?

Не в сети

#4 02.04.2016 12:11:27

Re: Как создать путь в роуте с index.php?

Городить подобное при любом раскладе не нужно. Для чего именно вам нужен такой путь? Может быть вам посоветуют более элегантное решение проблемы.

Не в сети

#5 02.04.2016 12:29:22

Re: Как создать путь в роуте с index.php?

Я переношу сайт с joomla. сайт уже проиндексирован и имеет трафик с поиска поэтому важно сохранить адреса.  Нужно чтоб все страницы шли через index.php, по примеру mysite.com/index.php/....
Подскажите пожалуйста решение!

Не в сети

#6 02.04.2016 14:29:03

Re: Как создать путь в роуте с index.php?

Если трафика немного или есть возможность поправить купленные ссылки, то лучше по-человечески сделать и подождать переиндексации.

Если это не вариант, то можно тупо использовать URL вида

site.com/index.php/my/page/

В таком случае index.php просто будет убран из адреса и routes можно использовать стандартные -

'/my/page'

Правда в таком случае придется вручную везде добавлять index.php/ при построении ссылок

<link href="{{ $indx.'css/myStyleSheet.css' }}" ....>

Еще, я бы прописал в главном контроллере или middleware проверку на присутствие index.php в URL. Если index.php нет, то принудительно редиректить на 404. Если этого не сделать, ПС могут дубли найти и наложить санкции.

Изменено AlexeyMezenin (02.04.2016 14:34:39)

Не в сети

#7 02.04.2016 15:23:21

Re: Как создать путь в роуте с index.php?

когда в роуте прописываю вот так  Route::get('/index.php/{slug}', 'IndexController@post');
Отображается в браузере No input file specified.

Не в сети

#8 02.04.2016 15:25:46

Re: Как создать путь в роуте с index.php?

AlexeyMezenin пишет:

Если трафика немного или есть возможность поправить купленные ссылки, то лучше по-человечески сделать и подождать переиндексации.

Если это не вариант, то можно тупо использовать URL вида

site.com/index.php/my/page/

В таком случае index.php просто будет убран из адреса и routes можно использовать стандартные -

'/my/page'

Правда в таком случае придется вручную везде добавлять index.php/ при построении ссылок

<link href="{{ $indx.'css/myStyleSheet.css' }}" ....>

Еще, я бы прописал в главном контроллере или middleware проверку на присутствие index.php в URL. Если index.php нет, то принудительно редиректить на 404. Если этого не сделать, ПС могут дубли найти и наложить санкции.


В том то и дело что уже и трафик есть и ссылки не поменять)
Может быть это можно сделать через файл htaccess?

Не в сети

#9 02.04.2016 15:31:38

Re: Как создать путь в роуте с index.php?

сейчас заметил что через index.php  и так (по умолчанию) работает.....)


То есть в итоги мне нужно только сделать так чтоб не работало без index.php? а как перехватить все запросы без index.php?

Изменено Romannnn (02.04.2016 15:32:13)

Не в сети

#10 02.04.2016 15:54:47

Re: Как создать путь в роуте с index.php?

когда в роуте прописываю вот так  Route::get('/index.php/{slug}', 'IndexController@post');

В route не нужно прописывать index.php.

В том то и дело что уже и трафик есть и ссылки не поменять)
Может быть это можно сделать через файл htaccess?

Ссылки не нужно менять. Я написал о построении ссылок в Laravel.

Romannnn пишет:

сейчас заметил что через index.php  и так (по умолчанию) работает.....)
То есть в итоги мне нужно только сделать так чтоб не работало без index.php? а как перехватить все запросы без index.php?

И так, чтобы ссылки строились с index.php/

На счет как - написал выше: либо middleware, либо в основном контроллере \app\Http\Controllers\Controller.php сделать проверку URL. Не проверял, но должно работать:

if (strpos($_SERVER['REQUEST_URI'], 'index.php')) {
    abort(404);
}

Изменено AlexeyMezenin (02.04.2016 16:00:55)

Не в сети

#11 02.04.2016 22:49:12

Re: Как создать путь в роуте с index.php?

ваша строка делает так что index.php не проходят, а без него работает. Кстати, главная страница должна быть исключением и работать без index.php то есть просто /

Не в сети

#12 02.04.2016 23:04:58

Re: Как создать путь в роуте с index.php?

if ((strpos($_SERVER['REQUEST_URI'], 'index.php')) == 'false') {
   abort(404);
}

вот так заработало.

Не в сети

#13 03.04.2016 00:14:18

Re: Как создать путь в роуте с index.php?

вообщем все получилось но теперь другой вопрос возник.
Как бы мне в данном случаи свою собственную страницу ошибки отобразить?
У меня она уже есть, я её прописывал в handler.php

Не в сети

#14 03.04.2016 06:52:41

#15 03.04.2016 12:17:09

Re: Как создать путь в роуте с index.php?

да, я создавал уже страницу в resources/views/errors/404.blade.php но в данному случаи браузер говорит "Сайт пока не может обработать этот запрос"
В чем может быть причина?

Не в сети

Подвал раздела