За последние 24 часа нас посетили 22947 программистов и 1227 роботов. Сейчас ищут 760 программистов ...

Новые страницы + .htaccess

Тема в разделе "PHP для новичков", создана пользователем Andrey5555, 7 ноя 2009.

  1. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Возник следующий вопрос: при создании новой страницы хочу сделать красивые URL. Делаю через mod_rewrite. Но возникло такое, что как мне изменять данные в .htaccess после создания новой страницы? Открываться файл для записи и записывать новое правило???

    Направьте на путь истинный..
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А зачем изменять-то его?? О.о
    Что за дурость переписывать файл постоянно?

    Код (Text):
    1. RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?mod=static&page=$1
    Это уже даёт бесконечное число страниц.
     
  3. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Да, Apple, пасиб. Уже сам это понял)

    Теперь следующий вопрос: а если создавать подменю, тоесть вложеные страницы. Учитываю что они могут на разных уровня от корневой директории?
     
  4. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Создай правило, вроде
    Код (Text):
    1. RewriteRule ^category/(.+)/?$ index.php?mod=category&cid=$1
    А затем из скрипта парсируй, делай что-то вроде:

    PHP:
    1. <?php
    2.  
    3. if(strpos($_GET['cid'], '/') !== false) {
    4.     $url = explode('/', trim($_GET['cid'], '/'));
    5. } else $url = (array) $_GET['cid'];
    6.  
    7. // ---
    8. echo '<pre>' . print_r($url, true) . '</pre>';
    9.  
    10. ?>
     
  5. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Andrey5555

    RewriteRule ^(.+)$ content.php?$1

    таким образом, ты перенаправишь вообще все запросы на файл content.php.
     
  6. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Таким образом ты ГЛУШИШЬ GET запрос
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Apple
    перенаправляешь != редиректишь.

    да, наверное, не слишком удачный термин. тогда уж перехватываешь все запросы и обрабатываешь из скриптом cintent.php
     
  8. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    DarkElf пасиб, но это действительно не подходит.
    Apple мысль я понял, пасиб.
     
  9. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Возник опять вопрос по этой теме)
    Надеюсь Apple подскажет)

    RewriteRule ^([a-zA-Z_]+)/([0-9a-z]+)/$ /?task=$1&code=$2 [L]
    RewriteRule ^([a-zA-Z_]+)/([0-9]+)/$ /?task=$1&id=$2 [L]

    Надо что бы сервер понимал разницу между id и code)

    Не представляю как сделать..

    Подскажите, а?
     
  10. Местами поменять