Первый шаг - переписать 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']);
на это. Просто поместите эту операцию на хост, и, надеюсь, все должно работать правильно.