Я сожалею об этом, но мой htdocs root ошибочен, и я не могу это изменить. Поэтому я должен заставить его работать в папке /public
.
Я использую обычный файл Laravel .htaccess со следующим переписыванием:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
Если я открою http://kemtime2_neu.pr.domain.de/public
я перенаправляюсь на http://kemtime2_neu.pr.domain.de/public/http://kemtime2_neu.pr.domain.de/public/login
Как я могу это исправить?
Мне бы хотелось, чтобы он работал с http://kemtime2_neu.pr.domain.de/
но получить его для работы с http://kemtime2_neu.pr.domain.de/public/
было бы хорошо.
Я решил это частично. Если у меня есть .htaccess в корневом каталоге вместо /public
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /public/index.php/$1 [L]
Я могу открыть http://kemtime2_neu.pr.domain.de/login
но изображения и css все еще ошибочны. Сначала нужно проверить, существуют ли файлы в /public
. Я думаю, что это новый вопрос .
Я использую 3 решения этого сообщения и отлично работает:
http://web.archive.org/web/20130320184846/http://forums.laravel.io/viewtopic.php?id=1258
Решение 1 – Альтернативный путь установки с символической ссылкой.
Это предпочтительное решение и, как правило, хорошая идея. Можно установить приложение в папку, не связанную с public_html /, а затем символизировать общую папку в public_html / path.
Например:
Установите приложение на /home/applications/mysite.com.
Представьте, что ваш DocumentRoot указывает на /var/www/vhosts/mysite.com/httpdocs
Удалите папку httpdocs из папки mysites.com vhosts, затем соедините их с символической ссылкой: ln -s /home/applications/mysite.com/public/var/www/vhosts/mysite.com/httpdocs
Решение 2 – .htaccess с mod_rewrite
Это решение позволяет вам отбрасывать Laravel в общую папку, а затем использовать файл .htaccess для перенаправления запросов в общую папку. Это решение помещает ваше приложение и основной системный код в общедоступную папку. Это не то, что мы рекомендуем вам делать с любой инфраструктурой PHP.
Шаг 1. Поместите Laravel в корневую папку вашего документа.
Шаг 2. Поместите следующий файл .htaccess в корневую папку документа.
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Шаг 3. Убедитесь, что вы вручную установили свою конфигурацию «url» в application / config / application.php, иначе Laravel будет генерировать неверные URL-адреса. Убедитесь, что каждая из ваших окружений имеет правильную конфигурацию application.url. Дополнительные сведения о конфигурациях, специфичных для среды, см. По адресу : http://laravel.com/docs/install#environments
Решение 3 – объединить общую папку в корневой каталог установки
Это решение помещает ваше приложение и основной системный код в общедоступную папку. Это не то, что мы рекомендуем вам делать с любой инфраструктурой PHP.
Скопируйте содержимое общедоступной папки в папку установки Laravel, а затем измените эту строку в файле index.php с:
require '../paths.php';
в
require 'paths.php';
Имейте в виду, что любые пакеты, библиотеки или другие типы стороннего кода могут не быть общедоступными.
Примечание. Важно также отметить, что ваши пакеты / и общедоступные / пачки / каталоги теперь конфликтуют. При использовании этого подхода вы можете не использовать пакет artisan: публиковать задание, не зная точно, что ваши пакеты хотят опубликовать.