Нужна помощь с htaccess

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем danneo, 9 янв 2013.

  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Есть адреса:
    Код:
    городN.site.ru/news/
    городN.site.ru/news/list/26/
    городN.site.ru/news/1234.html
    городN.site.ru/news/show/159.html
    Нужно сделать автоматичекое формирование всех ссылок на тех страницах в виде:
    Код:
    site.ru/news/
    site.ru/news/list/26/
    site.ru/news/1234.html
    site.ru/news/show/154.html
    Убрать из ссылки городN - любой город. Субдомен формируется виртуально. Формирование ссылок в коде не исправить, поэтому остается только надежда на htaccess
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Непонятно,
    ссылки формируются городN.site.ru/news/
    и вы хотите чтобы по этим ссылкам открывались страницы site.ru/news/?
    или вы хотите сделать редирект на site.ru/news/?
     
  3. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.725
    Симпатии:
    2.100
    попробуй
    замени название domain.tld на то, что нужно, например site.ru
     
    danneo нравится это.
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Не редирект, а формирование ссылки. Чтобы пользователь и поисковик просматривал новости только по одному пути, на основном домене. Сейчас же все новости дублируются на всех городах. Нужно их сделать только на основном. Причем только новости...
    чет не то. не срабатывает ничего
     
  5. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.725
    Симпатии:
    2.100
    вообще не срабатывает или неправильно срабатывает? в апаче расрешено использование htaccess для сайта? проверь на простом примере, скажем запретить-разрешить директори листинг.
     
  6. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    как формировались, так и есть.
    htaccess работает, это CMS, платная

    Там есть:
    Код:
    RewriteBase /
    RewriteRule ^(.*)\.(asp|aspx|asa|asax|dll|jsp|fcgi|pl)(.*)$ /404.php
    RewriteRule ^(.*)/file/(.*)\.php(.*)$ /404.php
    RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
    RewriteRule ^(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4
    RewriteRule ^(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ $1/list.php?catid=$2&page=$4
    RewriteRule ^(.*)/([A-za-z0-9_\-]+)-([0-9]+)-([0-9]+)\.html$ $1/list.php?catid=$3&catdir=$2&page=$4
    RewriteRule ^(.*)/show/([0-9]+)/([0-9]+)?([/])?$ $1/show.php?itemid=$2&page=$3
    RewriteRule ^(.*)/show/([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4
    RewriteRule ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3
    RewriteRule ^(.*)/([a-z]+)/(.*)\.shtml$ $1/$2/index.php?rewrite=$3
    RewriteRule ^(.*)/(.*)\.shtml$ $1/index.php?rewrite=$2
     
  7. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.725
    Симпатии:
    2.100
    выложи под хайд/цитату полную версию htaccess с твоими изменениями и примеры (желательно несколько) типа:
    что было - что до
    есть тестировщики правил
    можно поиграться с правилами и получить быстрый визуальный результат.
     
  8. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Написал вот что:
    Код:
    RewriteCond %{http_host} ^(.+)\.site.ru/news/ [nc]
    ^(.+)\.site\.ru/news/$ http://site.ru/news/$1 [R=301,L]
    
    Я немного понял принцип, но все равно, не понимаю эти регулярные выражения. Так у меня работает, как надо. Но только главную категорию, а подкатегории и страницы новости не переобразовывает. Как-то нужно указать правила, чтобы учитывались страницы с адресами:

    site.ru/news/list/26/
    site.ru/news/show/154.html

    Подскажите, пожалуйста, кто разбирается в регулярных выражениях...

    Подскажите хотя бы как сделать нисколько условий?
    Пишу
    PHP:
    RewriteCond %{http_host} ^(.+)\.site.ru [AND]
    RewriteCond %{REQUEST_URI} ^/news/ [nc]
    И сервер выдает ошибку. Если использовать одно из двух условий, то они срабатывают. Параметр [and] ведь вроде так указывается. А не хочет срабатывать. Может чего не так делаю?