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

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

  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    374
    Симпатии:
    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
    Сообщения:
    983
    Симпатии:
    320
  3. efs

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

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

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    374
    Симпатии:
    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
    Сообщения:
    374
    Симпатии:
    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;
    }
    Выдает ошибку
    Это при том, что Перейти по ссылке нормально грузится
    Где ошибка?

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

    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

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

    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

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