За последние 24 часа нас посетили 50879 программистов и 1796 роботов. Сейчас ищут 776 программистов ...

Htaccess

Тема в разделе "Прочие вопросы по PHP", создана пользователем veg, 18 дек 2014.

  1. veg

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

    С нами с:
    14 май 2011
    Сообщения:
    15
    Симпатии:
    0
    Есть файл htaccess
    Код PHP

    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule ^(.*)$ /index.php?page=$1 [L]
    Прекрасно все работает, примеры страниц
    Код PHP

    Код (Text):
    1. site.ru/ssilka1
    2. site.ru/ssilka2
    3. site.ru/ssilka3
    4. site.ru/ssilka4
    5. site.ru/ssilka5
    Это категории.
    Создал папку - single в ней индекс с шаблоном детального описания новости.
    Если зайти на сайт site.ru/ssilka1 - отобразится блог новостей, если кликнуть на новость то должна отобразиться детальная новость и переход на site.ru/ssilka1/novost1 , где сама новость формируется в index.php в каталоге single.

    Помогите разобраться, как сформировать ссылки и отобразить детальную новость при помощи single/index.php
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а теперь логику еще раз и больше примеров что во что
     
  3. veg

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

    С нами с:
    14 май 2011
    Сообщения:
    15
    Симпатии:
    0
    есть индексный файл index.php в корне site.ru

    Есть база данных с таблицей и столбцом URL
    Если зайти на site.ru/category
    то отработает RewriteRule ^(.*)$ /index.php?page=$1 [L]
    В базе будет произведена выборка из столбца по значению "URL" = category и на экране отобразится содержимое строки, URL в которой равен CATEGORY.

    Этот этап выполнен.

    Второй этап - на странице site.ru/category отображается список материалов категории CATEGORY. При клике на одну из них открывается ссылка site.ru/category/statiya
    При клике на другую - site.ru/category/statiya2
    и т.д.
    Шаблон для отображение детальной записи находится в site.ru/single/index.php
    То есть открывая site.ru/category/statiya или site.ru/category/statiya2 используется файл site.ru/single/index.php
    как сделать чтобы при прохождении в детальную новость, отображался шаблон site.ru/single/index.php ?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. veg

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

    С нами с:
    14 май 2011
    Сообщения:
    15
    Симпатии:
    0
    Лучше правило. RewriteRule ^(.*)/(.*)$ /single/index.php?page=$1=$2 [L] добавлял подобное, не хочет.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну иди читай про htaccess и регулярные выражения или жди подсказок/ готовый код, а еще можешь прямо сейчас воспользоваться роутером.
     
  7. veg

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

    С нами с:
    14 май 2011
    Сообщения:
    15
    Симпатии:
    0
    Просто htaccess это 1-2 строчки, а роутер это целое хранилище строк будет.
    Про htaccess читаю, но тему создал на случай если решение не найду.
    Как найду отпишу, вдруг кому понадобится.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    как добавляли-то?
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Надеюсь это ставил ^(.*)/(.*)$
    Выше этого ^(.*)$
     
  10. veg

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

    С нами с:
    14 май 2011
    Сообщения:
    15
    Симпатии:
    0
    Ставил и так и так.
    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule ^(.*)/(.*)$ /single/index.php?page=$1 [L]
    5. RewriteRule ^(.*)$ /index.php?page=$1 [L]
    В таком случае ошибку сервера выдает

    Добавлено спустя 41 минуту 30 секунд:
    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule ^(.*)/(.*)$ /index1.php?page=$2 [L]
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule ^(.*)$ /index.php?page=$1 [L]
    Сделал так. Из single вытащил файл index.php, переместил его в корень и сменил название на index1.php
    Перейдя на страницу site.ru/category SERVER["SCRIPT_NAME"] = index.php
    если перейти на site.ru/category/statiya то SERVER["SCRIPT_NAME"] = index1.php
    То есть как раз то что и нужно было, НО не отображается содержимое файла index1.php

    Добавлено спустя 3 минуты 52 секунды:
    Все работает, всем спасибо. Верхний пример и есть решение.