Я работаю над проектом, разделенным на две отдельные части. Часть первая, большая часть, находится в Laravel 4.2. Вторая часть, более короткая, находится в Laravel 5. Оба находятся на одном сервере.
Моя цель - получить доступ и использовать маршруты обоих проектов, т.е. Project 1 может вызывать и получать доступ к маршрутам Project 2 и наоборот.
Для доступа к обоим проектам я использую следующий файл виртуального хоста:
<VirtualHost *:80>
ServerAdmin m.khuramj@live.com
DocumentRoot /var/www/Laravel4Project/public
ServerName www.Laravel4Project.dev
Alias /billing /var/www/Laravel5Project/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/Laravel4Project/public/>
AllowOverride All
</Directory>
</VirtualHost>
Псевдоним «/ billing» в приведенном выше файле позволил мне разрешить доступ к Laravel5Project из Laravel4Project без объявления маршрута «/ billing» в моем файле «routes.php» Laravel4Project. Сессии и аутентификация в порядке. Пока здесь нет проблем.
Проблема в том, что псевдоним биллинга указывает на корень '/' в Laravel5Project, и в моем Laravel5Project есть некоторые другие маршруты, как показано ниже:
Route::get('/', function() {
return 'Laravel 5 Project';
}
Route::get('/anOtherRoute', function() {
return 'Another Route from Laravel 5 Project';
}
Чтобы получить доступ к маршруту «/» Laravel5Project, я предоставляю ссылку «/ billing» в моем Laravel4Project, которая отлично работает и позволяет мне получить доступ к Laravele5Project. Но для доступа к '/ anotherRoute' Laravel5Project, когда я предоставляю ссылку '/ billing / anotherRoute' или '/ anotherRoute' в Laravel4Project, оба не работают, и сервер Apache выдает мне следующую ошибку:
Not Found
The requested URL /billing/anotherRoute was not found on this server.
Apache/2.4.12 (Ubuntu) Server at www.laravel4project.dev Port 80
Я знаю, что это потому, что в моем Laravel4Project нет маршрута '/ billing / antohterRoute /', но он находится в файле 'route.php' Laravel5Project. Сам по себе / billing не является маршрутом, это просто псевдоним.
Итак, мой вопрос: как я могу получить доступ ко всем маршрутам Laravel5Project из Laravel4Project и наоборот?
Ниже приведены файлы .htaccess как Laravel4Project, так и Laravel5Project:
Файл .htaccess в корневом каталоге Laravel4Project:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/mm.*$
RewriteRule ^(.*)$ public/$1 [L,QSA]
RewriteCond %{REQUEST_URI} ^/mm.*$
RewriteRule ^/mm/(.*)$ public/mm/$1 [L,QSA]
</IfModule>
AddDefaultCharset utf-8
Файл .htaccess в публичном каталоге Laravel4Project:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Файл .htaccess в общедоступном каталоге Laravel5Project:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
После долгого ожидания ответа от сообщества Laravel и обмена стеками я не смог получить ответ.
Но я также продолжал пытаться найти решение, и вот оно:
Если вы заметили в вопросе выше, я упомянул, что Apache выдает мне следующую ошибку:
Not Found
The requested URL /billing/anotherRoute was not found on this server.
Apache/2.4.12 (Ubuntu) Server at www.laravel4project.dev Port 80
Обратите внимание на URL-адрес / billing / anotherRoute и домен www.laravel4Project.dev. Это означает, что URL-адрес, который я давал, был неправильным, как указано ниже:
Неправильный адрес
www.laravel4project.dev/billing/anotherRoute
Просто добавьте index.php после / billing. Таким образом, правильный URL-адрес будет таким, как указано ниже:
Правильный URL
www.laravel4project.dev/billing/index.php/anotherRoute
Теперь осталась единственная проблема - избавиться и удалить index.php из URL.
Может ли кто-нибудь помочь мне в этом?