Наверное, я действительно чего-то не понимаю:
На мой взгляд, вполне естественно то, что если нет файла http://sampe.ru/somealias, но есть папка http://sampe.ru/somealias, апач пытается открыть именно эту папку. Зачем искать обходные пути, если существуют простые решения?
Для начала я всё-таки создал бы файл index.html, чтобы чистая страница открывалась. И в .htaccess "Options -Indexes". А потом редирект на somealias.html - либо тупо в каждом index.html, либо в корневом .htaccess. Мне самому никогда это не надо было, но думаю, через регулярку несложно сделать.
Дабы не продолжать пустой спор, просто изложу своё видение темы.
Поначалу я вообще не хотел здесь ничего писать, поскольку вопрос был настолько простой, что мне казалось, ответ и без меня быстро отштампуют. Потом всё же выложил алгоритм решения, посчитав, что этого достаточно. Но нет же! Местный учёный народ, по какой-то причине посчитав себя уязвлённым, не только обложил меня словами, но и ещё и накидал мне ху минусов в репутацию. Поэтому отвечаю в полном объёме.
Дана исходная таблица БД:
Id | Rub_id | Sub_id | Rub_name | Sub_name------------------------------------------------- 1 | 1 | 1 | Транспорт | Легковые 2 | 1 | 2 | Транспорт | Грузовые 3 | 2 | 3 | Строительство | Бетон 4 | 2 | 4 | Строительство | Штукатурка 5 | 3 | 5 | Отдых | Отели
Такого рода данные встречаются, например, на досках объявлений. Здесь есть рубрики (Rub) и в каждой рубрике категории (Sub). Соответственно Rub_id - родительские элементы, Sub_id - дочерние. Эти идентификаторы обычно выводятся в HTTP-запросах; а для человекопонимания нужны буковки, соответственно в таблице содержатся имена (Rub_name и Sub_name) для рубрик и категорий. При больших объёмах данных имена родительских элементов хранятся в другой таблице, созданной для родительских категорий (чтобы не писать 100500 раз слово "Транспорт", а ссылаться на него по Rub_id=1), но если таблица небольшая, вариант ТС может быть удобным для её чтения человеком, и опять же не надо обращаться к другой таблице через JOIN.
В данном случае для решения поставленной задачи важен не столько запрос к БД, сколько способ его обработки. Нужно сформировать двухмерный массив , отражающий структуру данных. Каждый элемент этого массива должен содержать категории отдельной рубрики. Потом этот массив нужно разобрать на элементы и вывести их в удобном для пользователя виде - например, как список или таблицу. Ниже приведён код, выводящий в браузере список:
<?php//Формируем ассоциативный массив$sql = "SELECT rub_name,sub_name FROM table ORDER BY rub_name,sub_name";$all = array();$res = mysql_query($sql);while ($row = mysql_fetch_assoc($res)) { $all[$row['rub_name']][] = $row['sub_name'];}//Разбираем массив и выводим список?><ul><?phpforeach ($all as $key=>$rub){ echo " <li>$key\n <ul>\n"; foreach ($rub as $sub){ echo " <li>$sub</li>\n"; } echo " </ul>\n </li>\n";}?></ul>
Код рабочий, проверил на одном из своих сайтов. Времени на написание всего этого поста ушло больше, чем на написание и проверку кода.
Здравствуй, дерево!😂
Не намерен продолжать эту бесполезную дискуссию.
Вот только не надо свой личный говнокод преподносить как конфетку. А думать надо было, когда начали меня троллить ни с того, ни с сего.---------- Добавлено 07.10.2016 в 17:15 ----------
Короче, всё, что не Ваше - шлаковое. Нормальная структура у ТС, это только Вам непонятно.
Например: на сайте есть раздел "Новости корпораций". И надо выбрать новости не просто про компанию Google, и не просто про смартфон, а новости, в которых написано, что именно компания Google выпустила именно смартфон. А если задать третий тег - то именно компания Google выпустила именно смартфон, конкретно с ОС Android.
Да уже вчера все согласились, что вопрос больше теоретический, чем практический. Типа холивар получается.
Но надо-то, чтобы вывело не просто 2 значения, и не обязательно 2 значения, а те значения, у которых есть необходимая совокупность тегов.---------- Добавлено 07.10.2016 в 13:48 ----------
Ломать структуру готовой CMS - тогда нужно иметь какой-то определённый опыт, потому как если сломаете в одном месте, то может вылезти боком в другом месте. А насчёт моего видения - я написал: делается отдельная таблица для тегов, где есть столбцы с id тега, его названием, каким-то комментарием (чтобы из админки было видно, к каким материалам он относится). А в таблице новостей добавляется столбец, в котором перечисляются id тегов к каждой новости - например, в виде строки с разделителями или в виде сериализованного массива. Тогда запрос просматривает 500 строк с новостями, а не 5000 строк с новостями и тегами в разных комбинациях (где надо ещё и найти определённые совпадения). А уже скрипт парсит теги и отбирает нужные новости.
А в том виде, как сейчас, мне, честно говоря, ничего рационального с ходу в голову не приходит.
Вроде бы вчера закончили уже ... :)
Ну раз решили продолжить здесь, тоже выскажусь
С учётом этого, количество операций действительно одинаковое. Но у меня операция ltrim(), а в альтернативном варианте - implode(). В первом случае программа проверяет первый символ строки, и если он совпадает с заданным - удаляет его. Во втором случае программа склеивает новую строку из элементов массива произвольной длины. Мне почему-то кажется, что второй вариант более трудоёмок. Я понимаю, что современные процессоры что угодно вынесут на своём горбу, но стремление к уменьшению ресурсоёмкости склоняет меня к первому варианту. Большое складывается из мелочей. Да простит меня оппонент, каждый имеет право на свою точку зрения.
Да вовсе не зря. Сыпать якобы "умными" словами и намекать на некомпетентность собеседника - это моветон, за который надо советовать "убитьсяабстенку". И вбухать на форум содранный невесть откуда кусок кода, имеющий отдалённое отношение к вопросу топикстартера, не везде работающий, обременённый всякими лишними операциями и не содержащий того, чего надо - это вовсе не код "бери и пользуйся". Можете спросить об этом мнение ТС 🙄 .
К слову сказать, "оппонент" формирует не двухмерный а ТРЁХМЕРНЫЙ массив, с единственным элементом, являющимся двухмерным массивом, только для того, чтобы выдать этот двухмерный массив на выходе. Который, как я и написал, придётся разбирать циклом.