ОК, почитаю на досуге.
Anamnado, к слову. Когда-то достаточно давно я посещал ваш сайт. Обратил внимание, что он не адаптивный, а вы типа студия. Сказал «фи» и закрыл. Долго созревали. Но плюсую, что все-таки созрели. Лучше поздно, чем никогда :)---------- Добавлено 17.01.2019 в 15:04 ----------P.S. По-моему уже пора сделать более серьезное обновление, чем просто прикрутить адаптивность ;)---------- Добавлено 17.01.2019 в 15:14 ----------По сабжу: поддержка ширины 320 точек – это круто. На наших сайтах поддерживается. Еще как-то наши верстальщики мне втирали, что разрешение девайса по ширине и ширина страницы в точках – это не одно и то же, но я до конца этого не понял.
Он хочет рерайтить каждый адрес 🤪---------- Добавлено 17.01.2019 в 14:38 ----------GUZU, ссылки-то на страницах все равно останутся старыми. Лучше сразу натянуть на динамический каркас.---------- Добавлено 17.01.2019 в 14:43 ----------P.S. Для формирования ссылок лучше использовать спец. функцию, выполняющую «обратное связывание». Вдруг вы потом опять захотите поменять ссылки.---------- Добавлено 17.01.2019 в 14:49 ----------P.P.S. И я надеюсь, вы в курсе, что в плане SEO менять адресацию на работающем сайте самоубийственно. Только редирект может облегчить положение. Но делать редирект при переходе по внутренним ссылкам – идиотизм за редкими исключениями, т.е. ссылки на страницах сайта нужно по-любому править.
... !^www\.user1\.ru$ [NC]
...
То кол-во пунктов подменю для каждого пункта меню. Пока вы не присоедините пункты подменю, у вас не будет их parent_id.---------- Добавлено 13.01.2019 в 14:17 ----------...при условии WHERE `menutype` = 'main-menu'.
Рекурсия. Пункты меню/подменю хранятся в одной таблице.
mff, есть понятие роута (маршрута) с адресной маской, в которой может учитываться в том числе и строка параметров. Достаточно указать, что после ch= должно быть натуральное число, и первый вариант уже не будет подпадать под маршрут. На кол-во цифр тоже можно наложить ограничение в маске, чтобы даже не пытаться работать с такими большими числами. После «неудачного» обхода всех маршрутов роутер автоматом должен инициировать ошибку, дефолтная обработка которой должна заключаться в выдаче 404-ой. В моем примере выше я использовал простой REST-каркас. В REST используются достаточно простые и однообразные форматы адресов, поэтому может хватить и одной общей маски, отсеивающей явно некорректные адреса, например вот реальный фрагмент общей маски из используемого мной каркаса:
(\\?p=[1-9]\\d{0,9})?
Вопрос в конце означает, что подмаска в скобках описывает необязательную часть адреса, т.е. либо все, либо ничего: промежуточный вариант вроде p= некорректен по определению. Именно такие строгие правила помогают избавляться от разнообразных дублей. Вот можете поэкспериментировать с общей маской: http://g09.ru/gency-demo (только не меняйте первый слаг, чтобы оставаться в рамках данной демки, а просто дописывайте к нему доп. слаги и/или параметр p, например /gency-demo/test?p=9999999999).
Вариант 1 – не порождать дубли.
Вариант 2 – их закрывать (в роботс, указанием канонической и т.п.)
У вас первый, лучший, вариант, но кривоватый, т.к. придется ставить затычку в каждом частном случае. А я вот, к примеру, определил конкретные сущности (коллекцию статей и статью) в БД, «сказал», что мне нафиг не нужны параметры для отдельной статьи, и получил, что нужно: http://g09.ru/articles/my-first-article (дубли вроде ваших автоматом закрываются 404-ой, некоторые альтернативные тайпин адреса, например с тэйлинг слэшем, корректируются 301-ым редиректом). Но в принципе иногда нужно подтягивать и логику конкретного приложения, например при выводе коллекции (списка статей) я использовал такой код:
//меняем значение параметра 0<-->1rotate01();//отсеиваем некорректные значения параметраif ($pn==0||$pn>$pc) error(404);...
Что дает соотв. результат:
/articles – OK 200 – результат замены 0-->1 (0 – это когда нет параметра);
/articles?p=1 – Error 404 – результат замены 1-->0 и первого простого условия ($pn==0);
/articles?p=2 – OK 200;
/articles?p=100500 – Error 404.
Хотя, если вы сами не программируете, все это вам не оч. интересно 🍿
По сути это плата не за прикрепление домена/сам домен, а за использование конструктора, хостинг и т.п.
Альтернатива – заказать сайт, купить хостинг, переквалифицироваться в админа и т.п.
mff, первый адрес более вменяемый. Может, лучше наоборот?---------- Добавлено 06.01.2019 в 15:09 ----------