nginx一个规则正则表达式的多个位置

时间:2012-03-06 13:28:32

标签: nginx location php

我正在尝试强制nginx通过php-fpm处理以下网址:

任何以

结尾的网址
  • .PHP
  • /sitemap.xml
  • /api/api.js

我正在尝试以下正则表达式,但它不起作用:

location ^~ ^((.*\.php)|/sitemap.xml)+$ {

2 个答案:

答案 0 :(得分:2)

尝试......

location ~ (\.php|sitemap\.xml|api/api\.js)$ {
    ...
}

答案 1 :(得分:2)

你不应该试图强迫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位置阻止如何工作时,试图为位置维护正则表达式会非常痛苦。

http://wiki.nginx.org/HttpCoreModule#location