Nginx Zend Framework 和静态内容错误
Nginx Zend Framework and Static Content Error
这是相关的 nginx 配置(这不是纯 ZF 应用程序,而是嵌入了 ZF)
location /interface/modules/zend_modules/public/ {
root /interface/modules/zend_modules/public;
try_files $uri $uri/ $document_root/$uri $document_root/index.php$is_args$args;
}
location /interface/modules/zend_modules/public/(css|js|images)/ {
autoindex on;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
root /srv/app;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
http://example.com/interface/modules/zend_modules/public/Installer
成功returns页面,但是CSS,JS,所有图片都返回404
我只是不知道如何让我的静态内容不被重定向到 index.php
(静态内容位于 .../zend_modules/public/(css|js|images)
第一个位置块没有按您预期的方式工作。由于您的奇怪 root
值,它只是将 URI 重写为 /interface/modules/zend_modules/public/index.php
。
对于所有 location
块,root
的值应该是 /srv/app
,因为 nginx
通过将 root
值与 URI 连接来构造路径名.有关详细信息,请参阅 this document。
您建议此 server
实现多个应用程序,因此要将这些位置限制为以 /interface/modules/zend_modules/public/
开头的 URI,请使用嵌套位置并使用 ^~
修饰符。有关详细信息,请参阅 this document。
例如:
location ^~ /interface/modules/zend_modules/public {
root /srv/app;
try_files $uri $uri/ /interface/modules/zend_modules/public/index.php$is_args$args;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
编辑:
如果多个应用程序基于 PHP,并且共享相同的 root
,您可以使用如下内容:
root /srv/app;
location /interface/modules/zend_modules/public {
try_files $uri $uri/ /interface/modules/zend_modules/public/index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
这是相关的 nginx 配置(这不是纯 ZF 应用程序,而是嵌入了 ZF)
location /interface/modules/zend_modules/public/ {
root /interface/modules/zend_modules/public;
try_files $uri $uri/ $document_root/$uri $document_root/index.php$is_args$args;
}
location /interface/modules/zend_modules/public/(css|js|images)/ {
autoindex on;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
root /srv/app;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
http://example.com/interface/modules/zend_modules/public/Installer
成功returns页面,但是CSS,JS,所有图片都返回404
我只是不知道如何让我的静态内容不被重定向到 index.php
(静态内容位于 .../zend_modules/public/(css|js|images)
第一个位置块没有按您预期的方式工作。由于您的奇怪 root
值,它只是将 URI 重写为 /interface/modules/zend_modules/public/index.php
。
对于所有 location
块,root
的值应该是 /srv/app
,因为 nginx
通过将 root
值与 URI 连接来构造路径名.有关详细信息,请参阅 this document。
您建议此 server
实现多个应用程序,因此要将这些位置限制为以 /interface/modules/zend_modules/public/
开头的 URI,请使用嵌套位置并使用 ^~
修饰符。有关详细信息,请参阅 this document。
例如:
location ^~ /interface/modules/zend_modules/public {
root /srv/app;
try_files $uri $uri/ /interface/modules/zend_modules/public/index.php$is_args$args;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
编辑:
如果多个应用程序基于 PHP,并且共享相同的 root
,您可以使用如下内容:
root /srv/app;
location /interface/modules/zend_modules/public {
try_files $uri $uri/ /interface/modules/zend_modules/public/index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}