Как добавить стороннее приложение в Zend Framework 2 MVC (Apache)?

Итак, я использую Zend 2 Framework и следовал базовому стилю Zend MVC. Но допустим, я хочу добавить site.com/blog (и блог, являющийся сторонним приложением). Так как же мне добавить это? Как мне сказать фреймворку игнорировать / блог? Будет ли это просто изменение.htaccess? (Я использую Apache)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Спасибо!

3 ответа

Решение
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} !^blog.*$
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Попробуй это:

<IfModule mod_rewrite.c>
 RewriteEngine On 
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>

Это обнаружит, что /blog/ является реальным каталогом, и доступ к нему будет очень хорошим. Затем вы можете иметь файл htaccess в папке блога, чтобы делать там все, что вам нужно переписать, и это переопределит базовый htaccess при доступе к каталогу блога.

Я думаю, что ты ударил гвоздь по голове. ZF2 будет интерпретировать свои маршруты только после того, как веб-сервер сделает свое дело - так что это на самом деле не является фактором (и не должно быть!). Ради эффективности я настоятельно рекомендую указывать местоположение вашего блога как отдельную сущность местоположения в конфигурации вашего веб-сервера (так что это никогда не коснется берегов ZF2). Nginx делает это действительно изящно, вот пример конфигурации:

location ^~ /blog {
    root /var/www/example.com;
    index index.php index.html index.htm;
    try_files $uri $uri/ /blog/index.php;

    location ~ \.php {
        fastcgi_split_path_info ^(.*\.php)(.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Происходят самые разные вещи, вы можете держать свой WordPress отдельно от вашего ZF2 (во всех отношениях), и это никак не повлияет на производительность. Я не танцевал с Apache некоторое время, но я уверен, что есть эквивалентная структура. Стороны, иди NGINX;)

Удачи!

Другие вопросы по тегам