2016-04-17 5 views
-1

Я хочу, чтобы один php-скрипт обрабатывал все входящие запросы в my/blog directoy. Скрипт php проверяет наличие записи SQL для URL-адреса (например, www.example.com/blog/example_article). Если запись найдена, она обслуживает соответствующие данные страницы. Если нет записи для URL-адреса (т. Е. Www.example.com/blog/nothing_here), она перенаправляется на 404.Перенаправить все url в каталог на один php в nginx

Для этого мне нужно правило перезаписи в nginx.

Мой текущий конфиг:

root /usr/share/nginx/html/example/; 
    index index.php; 

    server_name example.com www.example.com; 

    location/{ 
      try_files $uri $uri/ @extensionless-php; 
    } 

    location /blog { 
      rewrite ?; // here i need a rewrite rule 
    } 

    location /uploads { 
      deny all; 
    } 

    error_page 404 /templates/404.php; 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi.conf; 
      fastcgi_intercept_errors on; 
    } 

    location @extensionless-php { 
      rewrite ^(.*)$ $1.php last; 
    } 

Пожалуйста, обратите внимание, что я использую extensionless URL.

+2

Возможный дубликат [Переписать все запросы к index.php с Nginx] (http://stackoverflow.com/questions/12924896/rewrite-all-requests-to-index-php -with-nginx) – rzelek

+0

Мне удалось зайти так далеко: location/blog { rewrite ^/([a-z0-9 -] +) /article.php?slug=$1; } но я получаю свою 404 страницу – J4rVan

ответ

0

Ответ:

location /blog { 
    index article.php; 
    rewrite ^/blog/(.*)$ /blog/article.php?slug=$1; 
} 
+0

Хотя этот код может ответить на вопрос, было бы лучше включить какой-то контекст, объяснить, как он работает и когда его использовать. Ответы только на код не полезны в долгосрочной перспективе. – Bono

Смежные вопросы