2013-07-31 8 views
1

Мой юй проект имеет следующую структуру:Как перенаправить определенные сегменты URL-адресов в отдельные веб-корневые каталоги?

webapp 
----frontend 
--------www 
------------index.php 
----backend 
--------www 
------------index.php 
----api 
--------www 
------------index.php 

https://github.com/tonydspaniard/yiinitializr-advanced

Apache 2,2

Каждый каталог WWW имеет собственный файл .htaccess. Например, "WebApp/интерфейс/WWW/.htaccess":

Options +FollowSymlinks 

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([^/].*)$ /index.php/$1 [L] 

Для отдельных частей приложения я использую субдомены "api.webapp.com", "admin.webapp.com" (символьные ссылки в папке public_html):

webapp.com -> webapp/frontend/www 
api.webapp.com -> webapp/api/www 
admin.webapp.com -> webapp/backend/www 

Но у меня есть проблемы с кросс домена Ajax запросов к API, и я хочу, чтобы получить что-то вроде этого:

http://webapp.com -> webapp/frontend/www/index.php 
http://webapp.com/api/ -> webapp/api/www/index.php 
http://webapp.com/admin/ -> webapp/backend/www/index.php 

Что такое правильный путь для маршрутизации URL сегмента к конкретным веб-корневой каталог? Псевдонимы, .htaccess, символические ссылки, может быть, что-то еще?

+0

.htaccess и более одного файла index.php лучше всего работает для указания целых сегментов Uri к югу папки. – aCodeSmith

ответ

0

Как сказал aCodeSmith, вы можете правильно настроить файл .htaccess для решения проблемы.

  1. Основание документа http://webapp.com должно быть webapp.
  2. Прямо в корне документа вы должны создать файл .htaccess с правилами маршрута.
 
RewriteCond $1 ^api\/ 
RewriteRule ^(.*) api/www/index.php [L,PT] 

RewriteCond $1 ^admin\/ 
RewriteRule ^(.*) admin/www/index.php [L,PT] 

RewriteRule . frontend/www/index.php 

Надежда, это поможет.

1

Спасибо, ребята. Теперь у меня есть две рабочие решения:
1) Алекс AKR
является корневой веб-приложение
WebApp/.htaccess:

RewriteCond $1 ^api\/ 
RewriteRule ^(.*) api/www/index.php [L,PT] 

RewriteCond $1 ^admin\/ 
RewriteRule ^(.*) admin/www/index.php [L,PT] 

RewriteRule . frontend/www/index.php 

2) WebApp/интерфейс/WWW является корнем.
В апача конфигурации набор псевдонимами:

Alias /api /var/www/webapp/data/www/webapp/api/www 
<Directory /var/www/webapp/data/www/webapp/api/www> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

В /webapp/api/www/.htaccess

RewriteEngine on 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule ^([^/].*)$ /api/index.php/$1 [L]