1

好的,所以我正在使用 Zend 2 框架并遵循基本的 Zend MVC 样式。但是可以说我想添加 site.com/blog (并且博客是第 3 方应用程序)。那么我该如何添加这个呢?如何告诉框架忽略 /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]

谢谢!

4

3 回答 3

4

试试这个:

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

这将检测到 /blog/ 是一个真实的目录,并且可以正常访问它。然后,您可以在 blog 文件夹中有一个 htaccess 文件来执行您需要在那里重写的操作,并且在访问 blog 目录时将覆盖基本 htaccess

于 2013-02-08T17:27:20.693 回答
3

我想你已经一针见血了。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 ;)

祝你好运!

于 2013-01-31T03:08:56.930 回答
0
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]
于 2013-02-14T17:34:10.397 回答