Nginx重写在服务器块中工作但不在位置

时间:2015-05-28 08:44:16

标签: nginx rewrite

我有这个规则在服务器块中工作正常,但在位置块中生成404错误。我无法理解为什么。

# Thumbnails [image_path]/[width]x[height]/[quality]/[image_name]
rewrite ^(.+)\/(\d*)x(\d*)\/(\d+)(\/.+\.(?:jpe?g|png|gif))$ /path/to/script/timthumb.php?src=$1$5&w=$2&h=$3&q=$4 last;

为什么会这样? 如果我在location / { ... }下找到此规则,则会停止工作。

这是完整配置:

# redirect from non-www to www 
# uncomment, save file and restart Nginx to enable
server {
    server_name architetturaecosostenibile.it;

    include /usr/local/nginx/conf/custom/varnish.conf;

    return 301 $scheme://www.architetturaecosostenibile.it$request_uri;
}

server {
    server_name www.architetturaecosostenibile.it;

    include /usr/local/nginx/conf/custom/varnish.conf;
    include /usr/local/nginx/conf/custom/pagespeed.conf;

    # Redirect old HTML pages
    rewrite ^(/.+)\.html?$ $scheme://$host$1 permanent;

    # Thumbnails
    rewrite ^(.+)\/(\d*)x(\d*)\/(\d+)(\/.+\.(?:jpe?g|png|gif))$ /plugins/system/fl/libraries/timthumb.php?src=$1$5&w=$2&h=$3&q=$4 last;

    # ngx_pagespeed & ngx_pagespeed handler
    #include /usr/local/nginx/conf/pagespeed.conf;
    #include /usr/local/nginx/conf/pagespeedhandler.conf;
    #include /usr/local/nginx/conf/pagespeedstatslog.conf;

    # limit_conn limit_per_ip 16;
    # ssi  on;

    access_log /home/nginx/domains/architetturaecosostenibile.it/log/access.log combined buffer=32k;
    error_log /home/nginx/domains/architetturaecosostenibile.it/log/error.log;

    root /home/nginx/domains/architetturaecosostenibile.it/public;

    location / {
        include /usr/local/nginx/conf/custom/sh404sef.conf;

        # Xmap
        rewrite ^/sitemap.xml/?$ /index.php?option=com_xmap&view=xml&tmpl=component&id=1 last;

        # JCH Optimize
        rewrite ^(.*?)(test_mod_rewrite) /$1media/plg_jchoptimize/assets/modrewrite.php?q=$2;
        rewrite ^(.*?)(gz|nz)/([^/]+)/([^/]+)/([^/]+)\.(js|css)$  /$1media/plg_jchoptimize/assets/jscss.php?f=$5&type=$6&gz=$2&d=$3&i=$4;

        # Errori nella stesura degli articoli
        rewrite ^/\s?(?:http://?)?www\.architetturaecosostenibile.it(.*)$ $1 permanent;
        rewrite ^(.*)/\{\{i\}\}/?$ $1 permanent;
        rewrite ^(.*)\s+\/?$ $1 permanent;

        # Redirect fintanto che SEF Advance non funziona
        rewrite ^(.*)\?device=desktop$ $1 permanent;
        rewrite ^/feed/?/?$ /rss.feed permanent;
        rewrite ^(.*)/feed/rss/?$ $1/rss.feed permanent;
        rewrite ^(.*)/feed/atom/?$ $1/atom.feed permanent;
        rewrite ^/ricerca/?$ /cerca permanent;
        rewrite ^/redazione/antonia-guerra/?$ /ae/redazione/antonia-guerra permanent;
        rewrite ^/scrivi-per-architettura-ecosostenibile/?$ /ae/proponiti/ permanent;
        rewrite ^/eco/eco-architetti/?$ /eco permanent;
        rewrite ^/sitemap-1/?$ /mappa-sito permanent;
        rewrite ^/password-dimenticata/?$ /utenti/remind permanent;
        rewrite ^/rsform/?$ / permanent;
        rewrite ^/inviare-comunicati-stampa/?$ /comunicati permanent;
        rewrite ^/renzo-piano/?$ /ae/progettisti/renzo-piano permanent;
        rewrite ^/normative/leggi-e-decreti/?$ /normative/leggi-decreti permanent;
        rewrite ^/pubblicizzare-prodotti-azienda-ecosostenibile/?$ /ae/pubblicita permanent;
        rewrite ^/architettura/progetti/in-europa/casa-zeb-sostenibile-085/?$ /architettura/progetti/in-europa/casa-zeb-snohetta-085/ permanent;
        rewrite ^/segnala-eco-mostro/?$ /eco/mostri/ permanent;
        rewrite ^/links-newsletter/(.+)$ /ae/newsletter/ permanent;

        # Adattamento voci sh404sef per SEF Advance
        rewrite ^/progettista/\d+-(.+)/?$ /ae/progettisti/$1/ permanent;
        rewrite ^/progetto/\d+-(.+)/?$ /ae/progetti/$1/ permanent;
        rewrite ^/progetti(.*)/?$ /ae/progetti$1 permanent;
        rewrite ^/autore/\d+-(.+)/?$ /ae/redazione/$1/ permanent;
        rewrite ^/newsletter/?$ /ae/newsletter/ permanent;
        rewrite ^/staff/?$ /contatti/staff/ permanent;
        rewrite ^/redazione/staff/?$ /ae/redazione/about/ permanent;
        rewrite ^/redazione/?$ /ae/redazione/ permanent;
        rewrite ^/pubblicita/?$ /ae/pubblicita/ permanent;
        rewrite ^/scrivi/?$ /ae/proponiti/ permanent;
        rewrite ^/entra/?$ /utenti/login/ permanent;
        rewrite ^/(antonia-guerra|federico-liva|anellina-chirico)/?$ /contatti/staff/$1/ permanent;
        rewrite ^/tag/\d+-(.+)/?$ /tags/tag/$1/ permanent;

        # Reindirizza gli articoli duplicati da SP Upgrade
        rewrite ^(.+)-sp-\d+$ $1 permanent;

        # TimThumb
        rewrite ^(.+)/thumb/(\d+)x(\d+)$ /templates/architetturaecosostenibile/lib/timthumb.php?src=$1&w=$2&h=$3;
        rewrite ^(.+)/thumb/(\d+)$ /templates/architetturaecosostenibile/lib/timthumb.php?src=$1&w=$2;

        # Spostamento categorie In Italia, In Europa, Nel Mondo in Progetti > ...
        rewrite ^(.*)/architettura/(nel-mondo|in-italia|in-europa)/(.*)$ $1/architettura/progetti/$2/$3 permanent;

        # Incorporazine categoria Rhome For Dencity in Progetti > In Italia
        rewrite ^(.*)/rhome-for-dencity/(.*)$ $1/progetti/in-italia/$2 permanent;

        # Spostamento Curiosità > Varie in Green Life > Curiosità Ecosostenibili
        rewrite ^/curiosita/varie/(.*)$ /green-life/curiosita-ecosostenibili/$1 permanent;

        # Spostamento Curiosità in Green Life > Curiosità Ecosostenibili
        rewrite ^/curiosita/?$ /green-life/curiosita-ecosostenibili/ permanent;

        # Spostamento Turismo > Turismo Ecosostenibile in Green Life > Turismo
        rewrite ^/turismo/turismo-ecosostenibile/(.*)$ /green-life/turismo/$1 permanent;

        # Sposto Staff > Team in Redazione > Staff
        rewrite ^/staff/team/?$ /redazione/staff permanent;

        # Cambiamento indicatore pagina "Page-N" a nuovo indicatore "pagina-N"
        rewrite ^(.*/)Page-(\d+)$ $1pagina-$2 permanent;

        # /ae/progetti/* in /ae/mappa-progetti/*
        rewrite ^/ae/progetti(?!sti)(.+)? /ae/mappa-progetti$1 permanent;

        # ripristino di /mappa-progettisti in /progettisti
        rewrite (.+)mappa-(progettisti.+) $1$2 permanent;

        # Rimuovi contenuti duplicati con ?device=desktop
        if ($arg_device = desktop) {
            return 301 $uri;
        }

        # block common exploits, sql injections etc
        include /usr/local/nginx/conf/block.conf;

        # Enables directory listings when index file not found
        #autoindex  on;

        # Shows file listing times as local time
        #autoindex_localtime on;

        # Enable SEF for Joomla
        try_files $uri $uri/ /index.php?q=$request_uri;
    }

    include /usr/local/nginx/conf/staticfiles.conf;
    include /usr/local/nginx/conf/php.conf;
    include /usr/local/nginx/conf/drop.conf;
    #include /usr/local/nginx/conf/errorpage.conf;
}

0 个答案:

没有答案