Я пытаюсь загрузить несколько проектов Laravel 4 на свой веб-сервер, а не на сервер разработки. Каждое приложение laravel 4 размещается в собственном подкаталоге. Как должна быть моя файловая структура? Я искал вокруг htaccess для удаления / public из URL-адреса, но я не увенчался успехом. этот сервер предназначен только для тестирования, он позволяет другим следить за тем, как строится проект. Я знаю, что их основные проблемы с безопасностью оставляют базовую структуру laravel в этих каталогах, но опять же они предназначены только для тестирования, а когда проекты завершены, они удаляются и размещаются на собственном сервере хостинга. Это моя файловая структура:
-public_html/ main website html files -Test Site Subdirectory Folder -subdirectoryFolder -Store/ -laravel app 1 -blog/ -laravel app 2 -newspaper -laravel app 3
если я устанавливаю приложение laravel в каждую папку подкаталога ( www.testsite.com/Store
, www.testsite.com/blog
, www.testsite.com/newspaper
), каждое приложение работает, однако я пытаюсь удалить публикацию в конце url, www.testsite.com/Store/public
– это то, что показано в браузере. Любая помощь с этой проблемой очень ценится. Спасибо.
переместите весь контент, включая index.php
в каждый общедоступный каталог в Магазин, Блог и Газету соответственно. и измените следующую строку:
require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';
в
require __DIR__.'/bootstrap/autoload.php'; $app = require_once __DIR__.'/bootstrap/start.php';
удачи.
EDIT : Извините. Вам также нужно отредактировать /bootstrap/paths.php
, изменить
'public' => __DIR__.'/../public',
в
'public' => __DIR__.'/../',
Похоже, моя структура разработки здесь именно то, что вы пытаетесь сделать. Поэтому у меня есть эта структура папок:
var |-- www |-- Store | |-- app | |-- bootstrap | |-- ... |-- blog |-- app |-- bootstrap |-- ...
Это мой файл VirtualHost /var/www/Store/vhost.conf
:
Alias /Store "/var/www/Store/public" <Directory /var/www/Store> Options Indexes Includes FollowSymLinks MultiViews AllowOverride AuthConfig FileInfo Indexes Order allow,deny Allow from all </Directory>
Да, я поместил его в папку проекта и добавил include в /etc/apache2/apache2.conf:
Include /var/www/Store/vhost.conf
Это мой файл .htaccess:
<IfModule mod_rewrite.c> #Options -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /Store/index.php/?$1 [L] </IfModule>
И мне просто нужно ударить
http://server.dev/Store
или
http://[ipaddress]/Store
Чтобы увидеть это.
Я построил небольшой скрипт, чтобы сделать все это для меня: https://github.com/antonioribeiro/laravel-installer . Он загружает, устанавливает, настраивает и загружает приложение Laravel в любую папку, в которой я нуждаюсь, делая все, что необходимо. Совместимость с дистрибутивами на базе Debian, такими как Ubuntu.
РЕДАКТИРОВАТЬ
Обратите внимание, что есть две вещи, которые удаляют /public
и /index.php
из вашего URL:
1) / Store, указывающий прямо на вашу общую папку:
Alias /Store "/var/www/Store/public"
2) и правило перезаписи, чтобы сохранить ваш URL-адрес в index.php
:
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]