Псевдоним домена в Zend-каталог - PullRequest
0 голосов
/ 18 августа 2010

У меня есть веб-сайт ZF по адресу domainA.com, и я хотел бы добавить псевдоним domainB.com к чему-то вроде: domainA.com/photos/album, чтобы альбом был корнем домена B.

Какэто может быть достигнуто?

1 Ответ

1 голос
/ 18 августа 2010

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST}    =domainB.com [NC]
RewriteCond %{REQUEST_URI} !^/photos/album
RewriteRule .* /photos/album/$0 [L]

Это перенаправит на /photos/album/, если после domainB.com не указан путь. Если я правильно помню, Zend Framework не требователен к тому, завершаются ли ваши контроллеры / действия косой чертой или нет, так что это должно быть хорошо. Если по какой-то причине оно должно быть /photos/album, у меня тоже есть решение, но если оно не нужно, то это излишне.

Позже ваш набор правил преобразует URL в index.php, и Zend Framework выполняет его маршрутизацию. Однако по умолчанию Zend Framework выполняет маршрутизацию - это использование REQUEST_URI, что в данном случае оказывается не тем, что мы хотим (это будет то, что было передано после domainB.com вместо того, к чему мы переписали запрос). Нам на самом деле нужно использовать REDIRECT_URL, который устанавливается нашим новым RewriteRule.

Документация запроса контроллера описывает этот сценарий (вид) и объясняет, что вы можете использовать Zend_Controller_Request_Apache404 в качестве объекта запроса для получения правильной информации о маршруте:

$request = new Zend_Controller_Request_Apache404();
$front->setRequest($request);

Я вполне уверен, что вы также можете просто получить текущий объект запроса и вызвать

$request->setRequestUri($_SERVER['REDIRECT_URL']);

на это. Просто поместите эту операцию на хост, и, надеюсь, все должно работать правильно.

...