За последние 24 часа нас посетили 22658 программистов и 1027 роботов. Сейчас ищут 707 программистов ...

Не получается настроить конфиг nginx для ЧПУ

Тема в разделе "Настройка веб-сервера", создана пользователем roswww, 22 ноя 2017.

  1. roswww

    roswww Активный пользователь

    С нами с:
    15 окт 2016
    Сообщения:
    154
    Симпатии:
    4
    Адрес:
    Cтаврополь
    Доброго времени .
    Когда сайт был на Apache2 ,то ЧПУ было настроено с помощь .htaccess.
    В nginx не существует апачевского .htacces ,где можно было бы настроить правила для mod_rewrite
    и правила преобразования нужно прописывать в конфигурационный файл сайта.
    Для перевода .htaccess в nginx я использовал -конвертер для nginx.,который выдал такой код:

    location / { if (!-e $request_filename)
    { rewrite ^(.*)$ /index.php?q=$0; }
    }

    а вот конфигурационный файл сайта:

    server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name view.com;
    root /var/www/view.com;
    index index.php;

    access_log /var/www/view.com/log/access.log;
    error_log /var/www/view.com/log/error.log;

    include /etc/nginx/templates/phpmyadmin.conf;

    location / {
    # Redirect everything that isn't a real file to index.php
    try_files $uri $uri/ /index.php$is_args$args;

    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    # try_files $uri =404;
    #}
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
    deny all;
    }

    location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    try_files $uri =404;
    }

    location ~* /\. {
    deny all;
    }
    }

    И как бы я не пытался этот код добавить выдаёт ошибку:

    jessie@roswel:/etc/nginx/sites-available$ sudo nginx -t
    nginx: [emerg] unknown "0" variable
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Что не так делаю можете ответить или как по другому сделать?



     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
  3. roswww

    roswww Активный пользователь

    С нами с:
    15 окт 2016
    Сообщения:
    154
    Симпатии:
    4
    Адрес:
    Cтаврополь
    Спасибо подошло ,nginx не выдаёт ошибку в конфигурации,но браузерная строка только отрабатывает запросы view.com/page1 ; view.com/page2 итд,а сама страничка не меняется,.По разному правил пути и менял конфигурацию.Без результат но.

    изначальный файл .htaccess до перевода в nginx.
    //
    AddDefaultCharset utf-8

    Options +FollowSymLinks
    Options -Indexes
    DirectoryIndex index.php

    RewriteEngine On
    RewriteBase /

    RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)/$ /?controller=$1&action=$2&id=$3&%{QUERY_STRING} [NS,L]
    RewriteRule ^([a-z]+)/([a-z]+)/$ /?controller=$1&action=$2&%{QUERY_STRING} [NS,L]
    RewriteRule ^([a-z]+)/([0-9]+)/$ /?controller=$1&id=$2&%{QUERY_STRING} [NS,L]
    RewriteRule ^([a-z]+)/$ /?controller=$1&%{QUERY_STRING} [NS,L]

    RewriteCond $1 !^(index\.php)
    RewriteCond %{REQUEST_URI} !\.(css│js│jpg│gif)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php?q=$0
    RewriteRule ^(.*)$ index.php/$1 [L,QSA] #так тоже пробовал.

    //
    index.php
    switch ($_GET['c'])
    {
    case 'page':$controller = new C_Page();break;
    case 'page1':$controller = new C_Page1();break;
    case 'page2':$controller = new C_Page2();break;
    case 'page3':$controller = new C_Page3();break;
    case 'page4':$controller = new C_Page4();break;
    case 'page5':$controller = new C_OtherPage();break;
    default:
    $controller = new C_Welcome();
    }
    $controller->Request($action);

    //
    main.php
    <div id = "main">
    <ul>
    <li><a href = "index.php">Главная.</a></li>
    <li><a href = "page">страница.</a></li>
    <li><a href = "page1">страница1</a></li>
    <li><a href = "page2">страница2</a></li>
    <li><a href = "page3">страница3</a></li>
    <li><a href = "page4">страница4</a></li>
    <li><a href = "page5">страница5</a></li>
    </ul>
    //

    Раньше вo view, до page было дописано,- index.php?c=some_ ,а в index,- some_.
    Контролер и модель не трогал.В чём тут ещё может быть ошибка,?