Php 如何将第三方应用程序添加到Zend Framework 2 MVC(Apache)中?

Php 如何将第三方应用程序添加到Zend Framework 2 MVC(Apache)中?,php,apache,zend-framework2,zend-framework-mvc,Php,Apache,Zend Framework2,Zend Framework Mvc,好的,我使用的是Zend 2框架,我遵循的是基本的Zend MVC风格。但假设我想添加site.com/blog(blog是第三方应用程序)。那么我是如何添加这个的呢?我如何告诉框架忽略/blog?这只是一个.htaccess更改吗?(我正在使用Apache) 谢谢 我认为你一针见血。ZF2只会在Web服务器发挥其魔力后解释其路由-因此它不是一个真正的因素(也不应该是!)。为了提高效率,我强烈建议您在Web服务器配置中将博客的位置标识为一个单独的位置实体(因此这永远不会影响ZF2)。Nginx非

好的,我使用的是Zend 2框架,我遵循的是基本的Zend MVC风格。但假设我想添加site.com/blog(blog是第三方应用程序)。那么我是如何添加这个的呢?我如何告诉框架忽略/blog?这只是一个.htaccess更改吗?(我正在使用Apache)


谢谢

我认为你一针见血。ZF2只会在Web服务器发挥其魔力后解释其路由-因此它不是一个真正的因素(也不应该是!)。为了提高效率,我强烈建议您在Web服务器配置中将博客的位置标识为一个单独的位置实体(因此这永远不会影响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;)


祝你好运

我认为你一针见血。ZF2只会在Web服务器发挥其魔力后解释其路由-因此它不是一个真正的因素(也不应该是!)。为了提高效率,我强烈建议您在Web服务器配置中将博客的位置标识为一个单独的位置实体(因此这永远不会影响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;)

祝你好运

试试这个:

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

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
这将检测到/blog/是一个真实的目录,可以很好地访问它。 然后,您可以在blog文件夹中拥有一个htaccess文件,以执行您在那里需要的任何重写操作,这将在访问blog目录时覆盖基本htaccess

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

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
这将检测到/blog/是一个真实的目录,可以很好地访问它。
然后,您可以在blog文件夹中拥有一个htaccess文件来执行您需要的任何重写操作,这将在访问blog目录时覆盖基本htaccess

,因此当前(my.htaccess)它几乎将所有内容发送到Zend Framework,对吗?我确信我必须让所有的host.com/bla/bla进入框架,否则它将无法路由它。我只需要说一下目录是否为/blog/donothing@Josh-
RewriteCond%{REQUEST\u FILENAME}-d
已经这样做了。它为以下重写规则添加了一个条件,即“仅当请求文件名不是目录(!-d)时。如果它是目录(如/public/blog),则apache应尝试加载DirectoryIndex是什么(通常是/public/blog/index.php),并处理blog/.htaccess中的任何其他指令。@Andrew-我唯一的问题是它当前显示的是RewriteCond%{REQUEST_FILENAME}-d,如果我改变它,应用程序会停止工作吗?@Andrew-好的,所以我把它放在我的服务器上,它看起来工作正常。但是如果我需要,我会转到Zend framework 404页面。为什么?(注意/blog/中唯一的东西是index.php)…我想说的是,/blog/*中的任何内容都应该转到/blog/index.php,而不是/index.phpy。您的
/blog
文件夹基本上需要相同的重写规则。因此,当前(my.htaccess)它几乎将所有内容都发送到Zend Framework,对吗?我知道我必须让所有的host.com/bla/bla转到该Framework,否则它将无法路由它。我只需要说目录是否为/blog/donothing@Josh-
RewriteCond%{REQUEST_FILENAME}!-d
已经这样做了。它为以下重写规则添加了一个条件,即“仅当请求文件名不是目录(!-d)时”。如果它是一个目录(比如/public/blog),那么apache应该尝试加载DirectoryIndex(通常是/public/blog/index.php),并处理blog/.htaccess中的任何其他指令。@Andrew-我唯一的问题是,如果我更改它,它当前的名称是RewriteCond%{REQUEST\u FILENAME}-d,这个应用程序会停止工作吗?@Andrew-好的,所以我把它放在了我的服务器上,看起来工作正常。但如果有必要,我会去Zend framework 404页面。。为什么?(注意,/blog/中唯一的东西是index.php)。。。我想说的是,/blog/*中的任何内容都应该转到/blog/index.php,而不是/index.phpy。您的
/blog
文件夹基本上需要相同的重写规则。
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]