Aqui estão as duas regras de reescrita:
Este aqui funciona
rewrite ^/knowledgebase/([0-9]+)/[a-z0-9_-]+.html$ /./knowledgebase.php?action=displayarticle&id=$1 last;
Este não faz
rewrite ^/announcements/([0-9]+)/[a-z0-9_-]+.html$ /./announcements.php?id=$1 last;
Não há diferença entre os dois, tanto quanto eu posso ver. O URL a ser reescrito para anúncios é:
/announcements/2/New-Site-Design.html
E deve ser reescrito para:
/announcements.php?id=2
Eu realmente não consigo ver como os anúncios não funcionam em comparação com o da base de conhecimento. Alguma dica seria muito apreciada.
=== Adicionado arquivo de configuração - meu domínio
#HTTP
server {
listen 80;
server_name portal2.website.co.uk website.co.uk www.website.co.uk;
access_log /var/log/nginx/website.access_log;
error_log /var/log/nginx/website.error_log;
root /var/www/website.co.uk/www;
index index.php index.htm index.html;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/website.co.uk/www$fastcgi_script_name;
include fastcgi_params;
}
rewrite ^/announcements$ /./announcements.php last;
rewrite ^/announcements/([0-9]+)/[a-z0-9_-]+.html$ /./announcements.php?id=$1 last;
rewrite ^/knowledgebase$ /./knowledgebase.php last;
rewrite ^/knowledgebase/([0-9]+)/[a-z0-9_-]+.html$ /./knowledgebase.php?action=displayarticle&id=$1 last;
rewrite ^/knowledgebase/([0-9]+)/([^/]*)$ /./knowledgebase.php?action=displaycat&catid=$1 last;
rewrite ^/downloads$ /./downloads.php last;
rewrite ^/downloads/([0-9]+)/([^/]*)$ /./downloads.php?action=displaycat&catid=$1 last;
}
No arquivo de configuração acima, substituí as referências ao meu domínio por 'website'
=== Editar
Aqui está a linha do log de erros
2012/06/28 11:40:04 [error] 29095#0: *7 open() "/var/www/website.co.uk/www/announcements/6/Moving-to-a-new-server.html" failed (2: No such file or directory), client: 92.232.232.25, server: portal2.website.co.uk, request: "GET /announcements/6/Moving-to-a-new-server.html HTTP/1.1", host: "portal2.website.co.uk"
Assim, a regra de regravação não está funcionando corretamente em /announcements/id/page-title.html