Sto scrivendo un semplice CMS in PHP. Pagine (file di riduzione dei prezzi) e le immagini sono accessibili come questo (rispettivamente):Nginx clean urls, come riscrivere una cartella come argomento con try_files
example.org/?q=about.md
example.org/?i=photo.jpg
Opzionalmente, vorrei utilizzare gli URL semplificati con Nginx, a rivolgere le medesime richieste simile a questa:
example.org/about
example.org/photo.jpg
Piuttosto uso try_files
di if
e rewrite
ma dopo aver sperimentato per ore, non riesco a farlo funzionare.
location/{
try_files $uri $uri/ /?q=$uri.md =404;
}
location ~ \.(gif|jpg|png)$ {
try_files $uri /?i=$uri =404;
}
Non capisco il motivo per cui il codice di cui sopra non funziona (gli URL con il lavoro argomento bene, ma quelle belle danno errori 404).
C'è qualcosa di sbagliato nel passare il nome della cartella come argomento usando $uri
?
Devo sfuggire a qualche personaggio strano (a parte il mio padrone di casa)?
Per essere completo, eseguo Nginx 1.6.2, utilizzando lo standard nginx.conf. Ecco il resto del mio blocco del server:
server_name example.org;
root /srv/example/;
index index.html index.htm index.php;
(...)
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
e fastcgi.conf è di serie.
È 'document_root' impostato correttamente? Si potrebbe provare '/index.php? Q = $ uri.md' nel' try_files', cioè indicare esplicitamente 'index.php', anche se penso che dovrebbe funzionare in questo modo. – Keelan
Sono abbastanza sicuro che 'document_root' è a posto dato che gli url regolari/lunghi funzionano bene. Ho anche provato con '/index.php? Q = $ uri.md' ma non ha fatto la differenza. – wilks