помогите по mod_rewrite

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

Статус темы:
Закрыта.
  1. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Не изучал этот модуль, так что прошу помощи. Нужно элментарное:
    Сделать чтобы по запросу http://site.com/page-1/ запрашивалась страница http://site.com/page-1.htm
    Хелп плиз.
     
  2. tirrex

    tirrex

    Регистр.:
    9 ноя 2008
    Сообщения:
    213
    Симпатии:
    60
    если я правильно понял - цифра будет меняться
    тогда так наверное:

    RewriteEngine on
    Options +FollowSymlinks
    RewriteBase /
    RewriteRule ^page-([0-9]+)/$ page-$1\.htm
     
    root230101 нравится это.
  3. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Вместо page-1 может быть любой кейворд с буквами, цифрами и знаком "-" между словами.
    По сути мне надо убрать только .htm на конце.
    UPD: В общем сам разобрался.
    RewriteRule ^([a-zA-Z0-9-]+)$ $1.htm
    Так работает.
     
  4. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Вот теперь не работают папки :(
    Если html файлы лежат в папках, то обращение идет не к папке а к файлу с расширением htm с именем папки.
    Как решить проблему?
     
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Смотри свой первый топик. Это не проблема. Это именно то, что ты и просил :)

    А если тебе надо некоторые папки исключить из правила, то пропиши их выше в виде
    Код:
    RewriteRule ^dirname.*$ - [L]
    
    где dirname - имя твоей папки. Все, что в ней будет открываться прямо.

    И вообще это гадание на кофейной гуще. Приведи структуру папок и скажи, что тебе нужно.
     
  6. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Да, я это и просил, но немного не продумал)
    Структура такая:
    http://site.com/N/keyword.htm
    Надо чтобы обращаться к ним можно было так:
    http://site.com/N/keyword

    Где N - число
    Keyword - ключевое слово

    Желательно все папки, у которых имя - число, разом исключить.
     
  7. leprikonhruk

    leprikonhruk Создатель

    Заблокирован
    Регистр.:
    26 сен 2006
    Сообщения:
    29
    Симпатии:
    5
    Urch нравится это.
  8. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Может кто-нибудь все же напишет готовое решение? Срочно очень нужно...
     
  9. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    чтобы рерайт не срабатывал на существующие файлы
    сделай так
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^page-([0-9]+)/$ page-$1\.htm

    если это охватывает не все ситуации,
    напиши сколько цифр может быть в N
     
  10. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Код:
    RewriteEngine on
    Options +FollowSymlinks
    RewriteBase /
    RewriteRule ^([0-9]+)\/page-([0-9]+)/$ $1\/page-$2\.htm
    Вот так заработало
    Вопрос решен, спасибо откликнувшимся.

    UPD:
    Появилась одна небольшая проблема с относительными путями. Если прописать путь images/thumbnail.jpg (на странице по адресу rewrite/1/page-1.htm), то обращается по адресу:
    http://rewrite/1/page-1/images/thumbnail.jpg

    надо: http://rewrite/1/images/thumbnail.jpg

    Как можно исправить?

    UPD:
    Проблему решил, прописав в head'е строку:
    <base href="http://rewrite/1/">
     
Статус темы:
Закрыта.