- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Возможно ли в принципе реализовать на mod_rewrite такую замену:
RewriteRule ^article_(a|b|c)\.html$ /index.php?article_id=(1|2|3)
Конечно, это решается топорным методом
RewriteRule ^article_a\.html$ /index.php?article_id=1
RewriteRule ^article_b\.html$ /index.php?article_id=2
RewriteRule ^article_c\.html$ /index.php?article_id=3
Но хочется свести все именно в одну строку. Господа матерые программисты, помогите пожалуйста :)
RewriteRule ^article_(a|b|c)\.html$ /index.php?article_id=$1
Shtogrin, нет, это не то.
$1 - это то, что будет взято из левой части выражения, в скобках. То есть
/article_a.html будет заменено на /index.php?article_id=a
а надо, чтобы была замена
/article_a.html ---> /index.php?article_id=1
Это уже скриптом реализуйте. Сделайте массив
$param["a"]=1;
$param["b"]=2;
и т. д.
Конечно, это решается топорным методом
RewriteRule ^article_a\.html$ /index.php?article_id=1
RewriteRule ^article_b\.html$ /index.php?article_id=2
RewriteRule ^article_c\.html$ /index.php?article_id=3
я бы сказал что оба метода достаточно топорные :-D
а вот про массив человек правильно говорит
RewriteRule ^article_(a|b|c)\.html$ /index.php?article_id=$1
$articles[1] = "a";
$articles[2] = "b";
$articles[3] = "c";
$article_id = array_search($_GET['article_id'],$articles);
имхо метод этот более перфектный, так как чтобы добавить в обработчик сттаью надо всего лишь добавить элемент в строку, тем более если этот массив заполняется из бд :), то просто прелестынй метод.
Возможно ли в принципе реализовать на mod_rewrite такую замену:
RewriteRule ^article_(a|b|c)\.html$ /index.php?article_id=(1|2|3)
Конечно, это решается топорным методом
RewriteRule ^article_a\.html$ /index.php?article_id=1
RewriteRule ^article_b\.html$ /index.php?article_id=2
RewriteRule ^article_c\.html$ /index.php?article_id=3
Но хочется свести все именно в одну строку. Господа матерые программисты, помогите пожалуйста :)
Так не получится.
А можно услышать изначальную задачу? Может к ней с боку подойти можно...
вообще идеальный вариант - это ЛЮБОЙ урл скармливать скрипту и уже им "парсить"
вообще идеальный вариант - это ЛЮБОЙ урл скармливать скрипту и уже им "парсить"
+1 тоже считаю наиболее оптимальным вариантом.
согласен с последними вариантами, но видимо человеку не нравится такой метод раз он идет в сторону опенсорс проектов и хочешь написать пару десятков правил для реврайта ))
antono, Алексей Барыкин, dkameleon, bearman, то, что вы предлагаете, лежит в области бизнес-логики. Я бы хотел обойтись без нее, и вынести все на уровень запросов.
Кол-во вариантов a|b|c ограничено и неизменно для данного проекта. Смысла городить тут бизнес-логику нет.
вообще идеальный вариант - это ЛЮБОЙ урл скармливать скрипту и уже им "парсить"
Можно поподробнее о преимуществах этого метода перед mod_rewrite?
видимо человеку не нравится такой метод раз он идет в сторону опенсорс проектов и хочешь написать пару десятков правил для реврайта ))
При чем здесь опен-сорс?
psylosss добавил 27.05.2008 в 07:45
А можно услышать изначальную задачу? Может к ней с боку подойти можно...
Примерно так: есть десяток разделов сайта. Каждый раздел - это сущность в БД со своим ID. Количество и название разделов не меняются. Предполагается, что разделы должны находиться по адресам
/name_a/
/name_b/
/name_c/
При открытии раздела нужно сделать запрос в БД для вывода, скажем, текста раздела. Сделать a|b|c первичным ключом - не вариант (т.к. ORM не поддерживает такую штуку, кроме того, структура разделов древовидная и есть повторяющиеся названия, например /name_a/ и /name_c/name_a/ - разные разделы).
antono, Алексей Барыкин, dkameleon, bearman, то, что вы предлагаете, лежит в области бизнес-логики. Я бы хотел обойтись без нее, и вынести все на уровень запросов.
Кол-во вариантов a|b|c ограничено и неизменно для данного проекта. Смысла городить тут бизнес-логику нет.
Не знал что это так заумно называется :)
Можно поподробнее о преимуществах этого метода перед mod_rewrite?
Скриптом можно гораздо "полнее" обработать урл, то есть учесть вообще все.
Примерно так: есть десяток разделов сайта. Каждый раздел - это сущность в БД со своим ID. Количество и название разделов не меняются. Предполагается, что разделы должны находиться по адресам
/name_a/
/name_b/
/name_c/
При открытии раздела нужно сделать запрос в БД для вывода, скажем, текста раздела. Сделать a|b|c первичным ключом - не вариант (т.к. ORM не поддерживает такую штуку, кроме того, структура разделов древовидная и есть повторяющиеся названия, например /name_a/ и /name_c/name_a/ - разные разделы).
Я бы тогда не так сделал, а сразу:
/name_1/
/name_2/
/name_3/
Если это первичный ключ, а разделов всего 10, то какой смысл делать отдельную таблицу под эти разделы, сделайте просто массив как уже я предлагал. А если все таки таблица, то зачем делать индекс primary на 10 записей? И так будет быстро искать. Вообщем у вас все равно задача сводится к тому чтобы сообщить компьютеру что a=1, b=2, c=3 и т.д.