Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Я только приступил, и не получается с короткими URL. index.phpубирается, а public нет. Из статьи следует что это делается
через .htaccess. Я скопировал его из статьи, проверил в конфиге сервера (XAMPP, modrewrite включен). Безуспешно. Заранее признателен за помощь.
(См. Решение от Павла ниже — прим. адм.)
Изменено Proger_XP (21.12.2012 22:50:19)
Не в сети
В статье правило для mod_rewrite:
RewriteEngine On
RewriteRule ^/?(.*)$ public/index.php/$1 [L]
...только даёт возможность открывать страницы типа http://localhost/laravel/mypage/... без необходимости добавлять public: http://localhost/laravel/public/mypage/....
Laravel по-прежнему будет генерировать public в своих ссылках - полноценное решение - это смена DocumentRoot или создание символической ссылки, но если к этому нет доступа (или это локальный сервер для разработки) можно просто установить url в файле application/config/application.php. Например, если Laravel находится в корне localhost под именем laravel, то это выглядит так:
<?php
return array(
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| The URL used to access your application without a trailing slash. The URL
| does not have to be set. If it isn't we'll try our best to guess the URL
| of your application.
|
*/
'url' => '/laravel',
Тогда новые URL будут иметь вид http://localhost/laravel/mypage/.... Думаю, добавлю потом это в статью.
Не в сети
Спасибо за ответ. но в том и дело, что при этом .htaccess не удается избавиться от public, приходится добавлять public в адресную строку. На локале можно, конечно, лезть в конфиг файл, но хочется делать так, как на хостинге, там-то не полезешь.
Не в сети
при этом .htaccess не удается избавиться от public
То есть .../laravel/mypage не работает? А то выдаёт? 404 страницу Апача или 404 Laravel?
Не в сети
http://localhost/laravel/ выдает 404 Laravel. А http://localhost/laravel/public/ выдает нормально дом. страницу.
Не в сети
Вот с этим .htaccess должно работать - http://forums.laravel.com/viewtopic.php?id=1258
Не в сети
Странно, не вижу причин, почему оно может не работать. Попробуй ещё ссылку medar.
Не в сети
Спасибо за ссылку. Поставил фреймворк с 0, записал нов. файл .htaccess, поставил'index' => '' в application/config/application.php. Больше ничего не менял. По адресу http://localhost/laravel/public/ выдает нормально дом. страницу, по адресу http://localhost/laravel/index.php тоже, а по адресу http://localhost/laravel/ выдает We took a wrong turn. Server Error: 404 (Not Found) - ошибка laravel. Я чего-то не понимаю: .htaccess сработает сразу, понятно. А чтобы добраться до файла application/config/application.php , сначала надо загрузить стартовый файл, и только потом считается конфиг?
Не в сети
полагаю, какая-то ерунда в настройках сервера. Хотя у меня штатный xampp, устанавил все с настройками по умолчанию. ???
Не в сети
по адресу http://localhost/laravel/index.php тоже, а по адресу http://localhost/laravel/ выдает We took a wrong turn
Это действительно ерунда получается. Я сам пользуюсь XAMPP, Laravel заводился всегда с пол оборота.
А чтобы добраться до файла application/config/application.php , сначала надо загрузить стартовый файл, и только потом считается конфиг?
Нет, определение адреса там в любом случае происходит уже после инициализации, поэтому конфиги читаются до этого.
Для проверки можешь открыть laravel/laravel.php и добавить сюда:
$uri = URI::current();
/* сюда */
Request::$route = Routing\Router::route(Request::method(), $uri);
строку:
var_dump($uri);
Посмотри, что получишь за адрес. При запросе домашней страницы это должно быть /, при любой другой - соответственно адрес, например /laravel/mypage/param = mypage/param.
Кстати, я сам пока пользуюсь версией 3.1.9, но было бы странно, если бы в 3.2 появился такой глюк. Но для верности можешь скачать старый билд и попробовать на нём.
Не в сети
Спасибо. Попробую 3.19. Только где бы ее найти? На офиц. сайте по кнопке для скачивания - 3.2, и в гугле не нашел.
При запросе http://localhost/laravel/ выдает 'laravel',
При запросе http://localhost/laravel/cont/3 выдает string 'laravel/cont/3' (length=14)
при запросах http://localhost/laravel/public/
и
http://localhost/laravel/index.php
выдает как положено '/'
Изменено oldeev (26.05.2012 01:20:01)
Не в сети
Меня ночью осенило и я вспомнил, как недели две назад решал аналогичный баг на англоязычном форуме. В классе URI есть косяк (или фича), которая отрезает базовый URL ил детектированного в пути:
Короче говоря, попробуй переименовать папку Laravel из localhost/laravel во что-то другое типа localhost/lara. Если поможет, объясню, в чём проблема.
Только где бы ее найти?
Вообще можно зайти в GitHub, нажать master, выбрать Tags -> 3.1.9 и нажать Zip. Но если хочешь я скинул архив на сервер: laravel-v3.1.9-0-gaf42dec.zip.
Не в сети
Возможно, дело в том, что http://localhost/laravel/ - это не корень веб-сервера, а .htaccess заточен на то, что все будет лежать в корне, т.е. localhost или каком-нить laravel.dev
По идее, в таком случае должна помочь директива RewriteBase /laravel/ , я попробовал, но оно у меня не завелось.
Не в сети
Меня ночью осенило и я вспомнил, как недели две назад решал аналогичный баг на англоязычном форуме. В классе URI есть косяк (или фича), которая отрезает базовый URL ил детектированного в пути:
Короче говоря, попробуй переименовать папку Laravel из localhost/laravel во что-то другое типа localhost/lara. Если поможет, объясню, в чём проблема.
Только где бы ее найти?
Вообще можно зайти в GitHub, нажать master, выбрать Tags -> 3.1.9 и нажать Zip. Но если хочешь я скинул архив на сервер: laravel-v3.1.9-0-gaf42dec.zip.
Сделал, все осталось по прежнему. Попробую скачать другую сборку. Спасибо за участие.
Не в сети
С новой сборкой (3.19) сразу запахал, так что на офиц. сайте (3.2) - с багом выложена. Спасибо Proger_XP, medar за помощь.
Изменено oldeev (26.05.2012 15:55:18)
Не в сети
С новой сборкой (3.19) сразу запахал, так что на офиц. сайте (3.2) - с багом выложена.
Ничего себе. Многие винят Тейлора, что он поторопился выпускать 3.2. Нет желания заполнить баг-репорт?
UPD: оказывается, medar уже это сделал
Не в сети
С новой сборкой (3.19) сразу запахал, так что на офиц. сайте (3.2) - с багом выложена.
Ничего себе. Многие винят Тейлора, что он поторопился выпускать 3.2. Нет желания заполнить баг-репорт?
UPD: оказывается, medar уже это сделал
medar, я что-то не въехал, в ответ автор написал /и дал ссылку/ про миграцию с одной версии на другую. При чем здесь это? То ли он не понял вопрос, то ли я - ответ.
Не в сети
Это он не понял вопроса, подумал, что я неправильно отмигрировался на 3.2 с 3.1.9
Не в сети
Не в сети
Не решил, но я и не решал. Я под каждый проект завожу отдельный локальный домен, в таком случае проблемы нет, .htaccess работает. Проблема появляется только если держать проект в папке домена.
Не в сети
У меня тоже были проблемы с короткими урл. Сайт находится по адресу http://localhost/laravel.
Конфигурил апач через алиас: Alias /laravel /home/pol/web/laravel/public
При активном index.php все работало. Как убираю index.php из урл, так работает только стартовая страница.
.htaccess использовал стандартный (версия 3.2.12)
Решилось добавлением RewriteBase /laravel/ в стандартный .htaccess
Надеюсь еще кому поможет.
Скажите пожалуйста, а в чем изюминка такого подхода, зачем так сделали?
Главное из коробки всегда нужно настраивать будет.
Т.е. я настроил, все работает и все адреса сайта будут доступны с public и без выходит
http://laravel.dev/docs
http://laravel.dev/public/docs
И так каждый хостер со своим приколом, еще с этим морочиться)
Изменено amberlex (09.01.2013 00:08:43)
Не в сети
Идея в том, что для безопасности лучше, когда скрипты лежат вне корня сайта (DocumentRoot в Apache). Но не все могут это сделать, так как требует доступ к настройкам хостов сервера, чего на обычных shared-хостингах нет. Другое дело, что изменив paths.conf можно заставить Laravel работать не public (переместив всю библиотеку туда), но если не хочется менять ядро, то на этот случай и есть такой способ с mod_rewrite.
Не в сети
Я че и заинтересовался, почему так мудрено в Laravel. В CakePHP тоже так сделано с двумя htaccess-ми, но там уже в корне есть htacces.
В Kohana достаточно вынести application, modules и system за корень и указать в index.php к ним пути.
Не в сети
Страницы 1