nginx clean url с дружественными именами файлов seo

Я хочу реализовать следующее, которое отлично работает под Apache. Это делается для улучшения SEO URL-адресов.

Пример URLS:

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 

То, что я с нетерпением жду, – это регулярное выражение местоположения, чтобы поймать все скрипты php без расширения без ограничений в ROOT FOLDER ONLY для обработки php-fptm.

Во всех приведенных выше URL-адресах «enter», «know_your_gemstone» – это все скрипты PHP, а последующие за ними – фиктивные имена файлов, созданные PHP для SEO. На самом деле имя файла "indian_astrology_horoscope_chart_prediction.html" не существует. В Apache я использую следующее, которое перехватывает «enter / know_your_gemstone» и т. Д. И никогда не беспокоится о остальной части имени файла:

 DefaultType application/x-httpd-php 

В последнем из приведенного выше URL-адреса «gID-7» используется для передачи переменной скрипту для отображения соответствующего содержимого. Хотя этот URL-адрес показывает контент DYNAMIC, URL-адрес создается таким образом, что он выглядит как URL-адрес STATIC, который легко индексируется поисковыми системами. Этот разбор переменных выполняется на PHP уже и не имеет ничего общего с Nginx. Я верю, что эта часть уже упоминается как довольно url / clean url.

Мне нужно знать, как лучше всего это реализовать в рамках NGINX? Мне нужно регулярное выражение для обработки всех скриптов (файлов с расширением меньше) в ROOT FOLDER и игнорировать то, что следует после таких имен скриптов. Если такой файл не существует, попробуйте проверить остальную часть URL-адреса, надеясь, что он будет действительным каталогом, за которым следует имя файла. Эта часть каталога является необязательной и не существенной для моих настоящих потребностей.

У меня VPS работает ubuntu, где я установил nginx с php-fpm, а для обычного URL-адреса, такого как index.htm / index.php, настройка работает нормально. Я не профессионал в написании регулярных выражений, поэтому я застрял на этом этапе. Я искал онлайн в рамках многих форумов / форума nginx, но не смог найти правильное решение.

Я использую последнюю версию версии Nginx v1.1.17 с php v5.3.6.13. Я также скомпилировал дополнительные модули, такие как больше заголовков, очистка кэша, memcache и т. Д.

Любая помощь по этому поводу будет оценена по достоинству. Заранее спасибо…

Related of "nginx clean url с дружественными именами файлов seo"

Это должно сработать для вас:

 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; ... } } } 

Альтернатива с прокси:

 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; ... } } } 

Вы имеете в виду mod_rewrite, который обычно используется CMS для перезаписи, по-видимому, статического URL-адреса файла в динамический URL index.php. Это можно сделать в nginx, также через rewrite:

 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; }