Вопросы по сайту на php+mysql - урлы

1 2345 6
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#21
Ms-Dred:
нормуль платные курсы 😂
Попов там объясняет как собрать очередную гоносистему?
Кстати ТС, вот вам пример запроса привели

только не делайте так, хорошо?

1) * - применяется в 2-ух случаях: отладка/тест/разработка, процесс обучения.

2) Данные должны фильтроваться.

Я то дурья голова, решил что Попов об этом рассказывает и ТС зашарит:)

ЗЫ. На счет фильтрации. Она как бэ уже есть в РеврайтРуле, и если это будут не буквы, цифры, тире, то реврайта не будет.

Если есть вариант SQL-injection - просветите.

Есть вариант %39(преобразование в шеснадцатиричное значение), но:

1) Если преобразование будет до моДреврайта, то оно преобразуется в одинарную ковычку и это не попадет под правило, соответственно реврайт не сработает

2) Если преобразование происходит после модРеврайта, то он не пропустит знак %

Я думаю, что преобразование типа urldecode веб-сервер делает до модРеврайта.

Без использования одинарной ковычки Скуля невозможна. Во всяком случае я так считаю. Не прав - просветите:)

Подпись))
L
На сайте с 07.12.2007
Offline
351
#22
DiAksID:
паранойя правит миром 😂 , повеселили, спс. лично для вас, если верите в эту муть: гуглим canonical, используем и спим спокойно без пачки димедрола на ночь...

А подумать слабо было, прежде чем глупости предлагать?

У ТС работает PHP-модуль, который разгребает URL вида: sait.ru/articles.php?id=1

Вариант №1. ТС прописывает ЧПУ-шные URLы страниц в меню руками.

Тогда чтобы поставить rel=canonical на нужный URL, придётся в модуле articles.php задавать какой-нибудь массив соответствий для всех URL:

$id=1 -> id1-mawina-slomalas

$id=2 -> id2-kak-sdelat-sait

$id=3 -> id3-remont-cvoimi-rukami

. . .

Иначе, как модуль articles.php узнает на какой ЧПУ-шный URL надо прописать этот canonical для переданного ему id?

Вариант №2. ТС ЧПУ-шные URLы генерятся автоматически.

Всё-равно придётся поддерживать массив соответствий для генерации URLов в меню навигации.

Делать ЧПУ-шные URL тупо из полей для H1(и тп) - не предлагать, при смене H1 - сменится URL, а если на него стоят внешние/внутренние ссылки?

А если есть массив соответствий id <-> URL - нафига ему mod_rewrite цеплять, когда он всё-равно по этому массиву шариться надо?

Можно сразу по URL "kak-sdelat-sait" найти $id = 3 и выгрести данные из БД, и URL красивее будет, без всяких лишних 'id2-'

Да и геморно такой массив соответствий поддерживать, проще его держать сразу в БД, из неё же и меню навигации формировать можно.

siv1987:
ЧПУ можно делать по всякому, но в любом случае без реврайтов не обойтись.
. . .
Это не означает что ваш вариант не будет через mod_rewrite.

Мой - точно без мод_реврайтов работает, я сама движки для всех своих сайтов пишу, все - ЧПУ-шные.

Ms-Dred:
только не делайте так, хорошо?

Если ТопикСтартеру ещё про SQL-инъекции начать заяснять - у него точно крышу сорвёт!

siv1987
На сайте с 02.04.2009
Offline
427
#23
Ladycharm:
Мой - точно без мод_реврайтов работает, я сама движки для всех своих сайтов пишу, все - ЧПУ-шные.

Да ну, и под каждую ссылку аля kak-sdelat-url.php создаете отдельный файл kak-sdelat-url.php? Или я чего-то упустил за это время?..

Например урл /news/1/ каким образом ваш сервер определяет что запрос предназначается для article.php?

bukachuk
На сайте с 07.09.2008
Offline
97
#24
Ladycharm:
Мой - точно без мод_реврайтов работает, я сама движки для всех своих сайтов пишу, все - ЧПУ-шные.

Из всего написанного я понял только одно - Вы не понимаете как работает mod_rewrite и зачем он нужен

Программирование PHP,Mysql (/ru/forum/934470)
L
На сайте с 07.12.2007
Offline
351
#25
siv1987:
Да ну, и под каждую ссылка аля kak-sdelat-url.php создаете отдельный файл kak-sdelat-url.php? Или я чего-то упустил за это время?

Строить ЧПУ будем вида:

/articles/kak-sletat-sait

/articles/chto-takoe-seo

В папке /articles/ кладём index.php - он будет выводить все статьи.

В index.php пишем (примитивно чтобы передать идею):

$url = str_replace("/articles/", "", $_SERVER{'REQUEST_URI'}; // -> 'kak-sletat-sait'

$res = mysql_query("SELECT * FROM Articles WHERE url='$url'", $conn_id);

if (mysql_num_rows($res) <=0) NotFound(); // Дать 404 и завершить скрипт

$row = mysql_fetch_array($res, MYSQL_ASSOC); // Получить поля записи из БД

/* Сформировать страницу по данным из записи в БД и вывести в шаблоне */

Естественно, в БД заводим текстовое поле url нужного размера. Выборкой этого поля формируем меню навигации по статьям.

Если развить дальше - можно группировать статьи по Рубрикам/Подрубрикам, заведя соответствующие поля в БД.

bukachuk:
Из всего написанного я понял только одно - Вы не понимаете как работает mod_rewrite и зачем он нужен

Ничо страшного, я смогу с этим жить.

Мод_реврайтом я запрещаю картинки и файлы тырить с моих сайтов и прибиваю "левых" роботов и некоторые парсеры.

bukachuk
На сайте с 07.09.2008
Offline
97
#26
Милованов Ю.С:

Есть вариант %39(преобразование в шеснадцатиричное значение), но:
1) Если преобразование будет до моДреврайта, то оно преобразуется в одинарную ковычку и это не попадет под правило, соответственно реврайт не сработает
2) Если преобразование происходит после модРеврайта, то он не пропустит знак %
Я думаю, что преобразование типа urldecode веб-сервер делает до модРеврайта.

Без использования одинарной ковычки Скуля невозможна. Во всяком случае я так считаю. Не прав - просветите:)

Можно минуя модреврайта обратиться к файлу и делать что угогдно например. Да и дело не в том, можно сейчас или нельзя. Дело в том, что ТС потом потащит этот метод за собой и когда будут другие условия работы, он сделает это точно также. Вообщем лучше сразу все сделать правильно и красиво.

---------- Добавлено 13.01.2013 в 18:47 ----------

Ladycharm:
Строить ЧПУ будем вида:
/articles/kak-sletat-sait
/articles/chto-tako-seo

В папке /articles/ кладём index.php - он будет выводить все статьи..

А если мне надо ЧПУ на 50 рубрик

/rubricname/1

/rubricname/2

Будете 50 директорий создавать и везде index.php

Вы конечно извините, но метод Ваш морально устарел. Ваш код получается ужасно педальный и немасшабируемый и настроить его нельзя толком.

siv1987
На сайте с 02.04.2009
Offline
427
#27
Ladycharm:
В папке /articles/ кладём index.php - он будет выводить все статьи.
В index.php пишем (примитивно чтобы передать идею):

Ок, я создал папку /articles/, создал index.php, я запрашиваю /articles/friendly-url. А теперь вопрос, с какой стати index.php должен отвечать на несуществующий, хз что в данном случае - то-ли файл, то-ли каталог?

L
На сайте с 07.12.2007
Offline
351
#28
bukachuk:
А если мне надо ЧПУ на 50 рубрик

/rubricname/1
/rubricname/2

Будете 50 директорий создавать и везде index.php

Нет, это Вы - будете создавать. У меня есть мозг, чтобы сообразить, как обработать все такие URL одним index.php.

И им же обрабатывать поиск по статьям типа: /rubricname/article/?search=статьи+про+CSS

bukachuk
На сайте с 07.09.2008
Offline
97
#29
Ladycharm:
Нет, это Вы - будете создавать. У меня есть мозг, чтобы сообразить, как обработать все такие URL одним index.php.

И им же обрабатывать поиск по статьям типа: /rubricname/article/?search=статьи+про+CSS

Кажется это будет через mod_rewrite ?

---------- Добавлено 13.01.2013 в 18:55 ----------

siv1987:
Ок, я создал папку /articles/, создал index.php, я запрашиваю /articles/friendly-url. А теперь вопрос, с какой стати index.php должен отвечать на несуществующий, хз что в данном случае - то-ли файл, то-ли каталог?

Да кстате, как это будет?

L
На сайте с 07.12.2007
Offline
351
#30
bukachuk:
Кажется это будет через mod_rewrite
Да кстате, как это будет?

Не, у mod_rewrite - синтаксис очень сложный, мелкая опечатка - и какие-нибудь страницы могут вылететь. А на 1000 страничном сайте сразу и не заметишь, что что-то перестало работать.

bukachuk, siv1987, в личку Вам сейчас отвечу. Уж больно вы дотошные парни :)

1 2345 6

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий