Переписать чпу под nginx

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем verfaa, 14 дек 2012.

  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Перенес сайт на новый сервер, на котором установлен только nginx (без apache) соответственно правила в .htaccess перестали работать. Подскажите как переписать правило
    Код:
    RewriteEngine On
    RewriteRule ^user/([^/\.]+)/?$ viewprofile.php?login=$1 [L,QSA]
    
    для nginx, и куда его потом прописывать, в nginx.conf в блок location / { } домена?
     
  2. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    985
    Симпатии:
    331
  3. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    833
    Симпатии:
    489
    Код:
    # nginx configuration
    location /user {
      rewrite ^/user/([^/\.]+)/?$ /viewprofile.php?login=$1 break;
    }
    
    в секцию server {} конфигурационного файла nginx
    ну и да, тыцкните сюда
     
  4. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    И ещё вопрос подобного плана: в папке лежит .htaccess такого содержания
    Код:
    php_flag engine off
    т.е. запрещает выполнение всех php скриптов в этой папке. Но т.к. .htaccess у меня не работает скрипты выполняются.
    Как мне в nginx прописать правило, чтобы в папке images и всех папках внутри папки images (картинки разложены по папкам 1, 2, 3, 4...) было запрещено выполнение любых php скриптов?

    Конвентеры htaccess to nginx не помогают - выдают location / { }
     
  5. swdns

    swdns Создатель

    Регистр.:
    22 сен 2007
    Сообщения:
    32
    Симпатии:
    13
    Запрещаем выполнения PHP-файлов в папке uploads
    Код:
    location /uploads/ {
        location ~ .*\.(php)?$
        {
            deny all;
        }
    }
    
     
  6. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    swdns, такой код запретит выполнение php кода только в папке uploads или и во всех вложенных папках тоже? И ещё, может паранойю, но этот код запретит выполнение php кода файлам с расширением php. А если хакеру к примеру каким-то образом все же удалось впихнуть шелл или ещё какую гадость с другим расширением, тогда как? Наверное нужно запретить выполняться php в файлах с любым расширением.

    Не работают новые реврайты, пытался и так
    Код:
    location /user {
      rewrite ^/user/([^/\.]+)/?$ /viewprofile.php?login=$1 break;
    }
    и так
    Код:
    location ~* /user {
      rewrite ^/user/([^/\.]+)/?$ /viewprofile.php?login=$1 break;
    }
    Выдает ошибку
    Это при том, что http://сайт.com/viewprofile.php?login=dima нормально грузится
    Где ошибка?

    Короче, для преобразования ссылки http://site.com/viewprofile.php?id=30411 в ссылку вида http://site.com/user/mickee/
    написал rewrite:
    Код:
       location /user {
         rewrite ^/user/([^/\.]+)/?$ /viewprofile.php?login=$1 last;
       }
    
    Правило работает и при переходе по ссылке http://site.com/user/mickee/ загружается анкета юзера. Только возникла новая проблема. Все ссылки на сайте теперь приобрели вид:

    http://site.com/user/mickee/index.php
    http://site.com/user/mickee/news.php
    http://site.com/user/mickee/star.php

    И соответственно перестали работать. Подскажите что исправить чтобы к ссылкам сайта не добавлялось user/mickee/ и они имели нормальный вид:

    http://site.com/index.php
    http://site.com/news.php
    http://site.com/star.php

    На сайте эти ссылки прописаны в меню как /index.php /news.php /star.php