За последние 24 часа нас посетили 35523 программиста и 1819 роботов. Сейчас ищут 843 программиста ...

ЧПУ

Тема в разделе "Вопросы от блондинок", создана пользователем Andrey5555, 25 фев 2009.

  1. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Столкнулся со след. проблемой: ссылка вида "?id=$id&page=$pages" должна принять вид "/$id/$pages/".
    Правило RewriteRule ^.../([0-9])/([0-9])/ /...?id=$1&page=$2 [L]

    Проблемма в том, что при переходе по ссылке .../1/2/ (2 является номером страницы) переход на страницу 2 не осуществляется. И еще при "попадании" на 2 страницу ссылки для перехода по страницам становятся .../1/2/2/ и тд.

    Подскажи что надо исправить. Спасибо
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    url - site.ru/1/1
    href="/1/1"
    RewriteRule ^([0-9])+/([0-9])+/$ index?id=$1&page=$2
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а в рулях page
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а нех относительные пути юзать. юзай абсолютные.
     
  5. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    440Hz
    А можно подробнее, непонятно)
     
  6. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Не получается что то...
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    это значит что ты зашел на страницу по урлу /1/2/ и ссылка идет как < a href="./2/">page</a>

    ./2/ это относительный путь
    http://site.com/1/2/ это абсолютный путь
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда

    первые две строчки - это для "умников". закоменть.
     
  9. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    И зачем народ так извращается? Особенно когда видишь километровые простыни этих rewrite rule в .htaccess

    У меня одна рула -
    Код (Text):
    1. RewriteEngine On
    2. RewriteBase /
    3. RewriteRule !\.(ico|jpeg|jpg|png|gif|swf|css|htc)$ index.php [L]
    PHP сам рассовывает данные из URL куда надо парся $_SERVER['REQUEST_URI']. Вобщем-то всё сводиться к тупому explode('/', $_SERVER['REQUEST_URI']).
    У меня дополнительно всё пихается ещё в константы, что бы параметры были глобально доступны везде. Зато я легко это ставлю на любой WEB сервер, а не переписываю километр rewrite rules с Apache под Lighttpd или nginx.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    В htaccess только последняя строка. Первые две объясняют, как пользоваться.
     
  11. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Да понял, еще не настолько отупел. Но всеравно тоже самое
     
  12. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Тоже делаю похожие ЧПУ, но уже подумываю над переходом к БД и ссылками вида www.сайт.ру/page1.html
     
  13. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Здраствуйте. Поднимаю тему по проблеме что не работает mod_rewrite только на странице http://localhost/admin/index/
    При переходе на http://localhost/admin/accept_announcement/14/, то Not Found.

    На остальный /admin/ все нормально. В .htaccess все нормально.

    В чем может быть проблема, и как ее решить?



    Вот содержание всего .htaccess:

    RewriteEngine on
    Options +FollowSymLinks
    RewriteBase /

    RewriteRule ^.htaccess$ - [F]

    RewriteRule ^index/$ /index.php [L]
    RewriteRule ^rules/$ /rules.php [L]
    RewriteRule ^add/$ /add.php [L]

    RewriteRule ^search/$ /search.php [L]
    RewriteRule ^handler/search/([^/]*)/([0-9])/$ /handler/search.php?text=$1$page=$2 [L]
    RewriteRule ^advanced_search/$ /advanced_search.php [L]
    RewriteRule ^handler/advanced_search/$ /handler/advanced_search.php [L]

    RewriteRule ^announcements/([0-9])/$ /announcements.php?id=$1 [L]
    RewriteRule ^announcement/([0-9])/$ /announcement.php?id=$1 [L]
    RewriteRule ^announcements/([0-9])/([0-9])/$ /announcements.php?id=$1&page=$2 [L]
    RewriteRule ^handler/add_announcement/$ /handler/add.php [L]
    RewriteRule ^handler/captcha/$ /handler/captcha.php [L]


    RewriteRule ^admin/auth/$ /admin/auth.php [L]
    RewriteRule ^handler/auth/$ /handler/auth.php [L]

    RewriteRule ^admin/index/$ /admin/index.php [L]
    RewriteRule ^admin/announcements/$ /admin/announcements.php [L]
    RewriteRule ^admin/sections/$ /admin/sections.php [L]
    RewriteRule ^admin/rules/$ /admin/rules.php [L]
    RewriteRule ^admin/administration/$ /admin/administration.php [L]
    RewriteRule ^admin/index/([0-9])/$ /admin/index.php?page=$1 [L]
    RewriteRule ^admin/announcements/([0-9])/$ /admin/announcements.php?page=$1 [L]
    RewriteRule ^admin/announcement/([0-9])/$ /admin/announcement.php?id=$1 [L]

    RewriteRule ^admin/accept_announcement/([0-9])/$ /admin/accept_announcement.php?id=$1 [L]
    RewriteRule ^admin/cancel_announcement/([0-9])/$ /admin/cancel_announcement.php?id=$1 [L]
    RewriteRule ^admin/add_announcement/$ /admin/add_announcement.php [L]
    RewriteRule ^admin/edit_announcement/([0-9])/$ /admin/edit_announcement.php?id=$1 [L]
    RewriteRule ^admin/delete_announcement/([0-9])/$ /admin/delete_announcement.php?id=$1 [L]