Oggi ho speso un sacco di tempo (forse troppo) per capire come modificare le estensioni, all’interno di una url, con le rewrite di Nginx .
Ovvero chiamare la url http://miosito.com/miofile.html e servire con Nginx http://miosito.com/miofile, che in realtà è un php da processare.
A fare le cose più difficile una url .html può indicare anche un file esistente html.
Finalmente ho risolto tutto correttamente, quindi con questo post spero di aiutare qualcun’altro a fare il tutto molto più velocemente in futuro.
Mentre stavo cercando una soluzione al mio problema ho trovato esattamente l’opposto, come una aggiungere l’estensione ad una url, questo non era quello che stavo cercando, ma può tornare utile in altre situazioni:
1) Add an extension to an url
Problema: si desidera aggiungere di default html a tutti gli URL..
Questa configurazione riscriverà http://xxx.com/myurl in http://xxx.com/myurl.html:
location / { #Si ferma se la url ha già estensione .html if ($request_filename ~* ^.+.html$) { break; } # aggiunge .html alla URI e serve il file, directory o link simbolico se esiste if (-e $request_filename.html) { rewrite ^/(.*)$ /$1.html last; break; } } |
2) Rimuovere un’estensione da un url
Problema: Avevo un sito wordpress con permalink che aggiungevano alle url .html (non chiedetemi il perchè), ma per funzionare correttamente le url devono essere trattate come qualsiasi altro php.
Questa soluzione cambierà http://xxx.com/myurl.html in http://xxx.com/myurl e la invierà al processo FastCGI che la analizzerà e servirà all’utente finale come php.
location ~ \.html$ { #Si ferma se la url corrisponde ad un vero file .html if (-f $request_filename) { expires 30d; break; } # se il file non esiste rimuove l'estensione. html e continua if (!-e $request_filename) { rewrite ^/(.*)\.html$ /$1 last; } } # configurazione standard per l'elaborazione di un url in Wodpress location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php; if (-f $request_filename) { expires 30d; break; } if (!-e $request_filename) { rewrite ^(.+)$ /index.php last; } } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/mysite.com/public_html$fastcgi_script_name; } } |
Probabilmente non è la soluzione più elegante, ma funziona benissimo, e con questo si può avere (se si vuole), tutte le url di wordpress che terminano con .html.
Popular Posts:
- Nightingale un bellissimo riproduttore audio per Linux
- (English) Linux shell: Dfc – Check your disk space with style
- Livarp – Una distribuzione Linux molto leggera
- Come convertire facilmente i Video di Youtube ad MP3 su GNU/Linux
- 5 Visualizzatori di fumetti per Linux
Find me on Google+

Nice tip.exactly i was looking for the same.