【发布时间】:2012-03-23 23:40:21
【问题描述】:
我正在尝试强制 nginx 通过 php-fpm 以下网址进行处理:
任何以
结尾的网址- .php
- /sitemap.xml
- /api/api.js
我正在尝试以下正则表达式,但它不起作用:
location ^~ ^((.*\.php)|/sitemap.xml)+$ {
【问题讨论】:
我正在尝试强制 nginx 通过 php-fpm 以下网址进行处理:
任何以
结尾的网址我正在尝试以下正则表达式,但它不起作用:
location ^~ ^((.*\.php)|/sitemap.xml)+$ {
【问题讨论】:
试试...
location ~ (\.php|sitemap\.xml|api/api\.js)$ {
...
}
【讨论】:
你不应该真的试图强迫 Nginx 向 PHP 发送东西。这是一种“错误的方式”。您应该让 Nginx 查看文件是否存在,如果不存在则通过。据了解,*.php需要经过PHP处理,所以传递.php。
location / {
try_files $uri /index.php;
}
location ~ \.php {
fastcgi_pass unix:/tmp/php-fpm.socket;
}
location = /api/api.js {
fastcgi_pass unix:/tmp/php-fpm.socket;
}
location = /sitemap.xml {
fastcgi_pass unix:/tmp/php-fpm.socket;
}
当您不了解 Nginx 位置块的工作原理时,尝试为位置维护正则表达式从长远来看会非常痛苦。
【讨论】: