URL pulito nginx con nomi di file compatibili con seo

Desidero implementare il seguente che funziona perfettamente con Apache. Questo è stato fatto per una migliore SEO degli URL.

URL di esempio:

http://www.astrogyan.com/enter/indian_astrology_horoscope_chart_prediction.html http://www.astrogyan.com/know_your_gemstone/gID-7/sani_planet_saturn_gemstone_blue_sapphire_neelam.html 

Ciò di cui sono esattamente impaziente è la regex di un luogo per catturare tutti gli script php senza estensione nella ROOT FOLDER SOLO per l'elaborazione da php-fptm.

In tutti gli URL di cui sopra "enter", "know_your_gemstone" sono tutti script PHP e ciò che li segue sono nomi di file fittizi generati da PHP per SEO. In realtà "indian_astrology_horoscope_chart_prediction.html" nome file non esiste. In Apache, utilizzo quanto segue che intercetta "enter / know_your_gemstone" ecc e non disturba mai il resto del nome del file:

 DefaultType application/x-httpd-php 

Nell'ultimo URL sopra, "gID-7" è usato per passare una variabile allo script per mostrare il contenuto appropriato. Sebbene questo URL mostri contenuti DINAMICI, l'URL è creato in modo tale da apparire come un URL STATICO che può essere facilmente indicizzato dai motori di ricerca. Questa analisi delle variables è già in PHP e non ha nulla a che fare con Nginx. Credo che questa parte sia già indicata come url / url pulito.

Devo sapere come è ansible implementarlo al meglio con NGINX? Ho bisogno della regex per elaborare tutti gli script (estensione less file) in ROOT FOLDER e ignorare quanto segue dopo tali nomi di script. Se tale file non esiste, quindi prendere in considerazione di controllare il resto dell'URL sperando che fosse una directory valida seguita da un nome di file. Questa porzione di directory è facoltativa e non essenziale per le mie esigenze attuali.

Ho un VPS con ubuntu in esecuzione where ho installato nginx con php-fpm e per URL normali come index.htm / index.php l'installazione funziona correttamente. Non sono un professionista nella scrittura regex quindi sono bloccato in questo frangente. Ho cercato online sotto molti blog / forum nginx ma non ho trovato la soluzione giusta.

Sto usando l'ultima versione di sviluppo di Nginx v1.1.17 con php v5.3.6.13. Ho anche compilato moduli aggiuntivi come più header, cache purge, memcache ecc.

Qualsiasi aiuto su questo sarà più apprezzato. Grazie in anticipo…

Questo dovrebbe funzionare per te:

 server { listen 80; server_name example.com; root /full/server/path/to/your/cms; index index.php; location / { try_files $uri $uri/ /phphandler } location /phphandler { internal; # nested location to filter out static items not found location ~ .php$ { rewrite ^/([^/]*)(.*) /$1 break; fastcgi_pass 127.0.0.1:8080; ... } } } 

Alternativa con proxy:

 server { listen 80; server_name example.com; root /full/server/path/to/your/cms; index index.php; location / { try_files $uri $uri/ /phphandler } location /phphandler { internal; # nested location to filter out static items not found location ~ .php$ { rewrite ^/([^/]*)(.*) /$1 break; proxy_pass 127.0.0.1:8080; ... } } } 

Ti riferisci a mod_rewrite, che è comunemente usato da CMS per riscrivere un URL di file apparentemente statico in un URL dinamico index.php. Questo può essere fatto in nginx, anche tramite riscrittura:

 server { # port, server name, log config omitted location / { root /path/to/your/cms; index index.php index.html; # replace index.php with your real handler php if (!-f $request_filename) { # request is not a file rewrite ^(.*)$ /index.php?q=$1 last; break; } if (!-d $request_filename) { # request is not a dir rewrite ^(.*)$ /index.php?q=$1 last; break; } } # sample fastcgi php config, to allow running of your index.php location ~ .php$ { fastcgi_pass 127.0.0.1:9090; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/to/your/cms$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; } # static files location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { access_log off; expires 30d; } error_page 404 /index.php; }