Apache переписывается для Laravel / public

Я сожалею об этом, но мой 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: публиковать задание, не зная точно, что ваши пакеты хотят опубликовать.