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

1 2345 6
[Удален]
#31

Столько споров :)

Я тут подумал и решил, что буду делать html сайты(частично с php), там то урлы будут в виде sait.ru/post.php

Трудится придется над вставлением анонсов, разве что.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#32

Ladycharm, чтобы не было злых дублей от конкурентов делаем следующее:

1) В таблицу с постами добавляем регистроЗависимое(ставим правильный коллэйшн) поле `perm_url`

2) В интерфейсе добавления поста добавляем еще 1 инпут и там пишем ЧПУ адрес. Либо же делаем какой-нить механизм(например транслитерация урлов из названия записи).

3) Делаем как писал в предыдущем посте


RewriteEngine On
RewriteRule ^articles/([\d\w-]+)\.html articles.php?url=$1?rewrite=1 [L]

4)файл articles.php


if ( !isset($_GET['rewrite']) )
{
die('Давай досвидания .!.');
}
$sql = "SELECT * FROM `gcms_posts` WHERE `perm_url`='{$_GET['url']}'";
$result = mysql_query($sql);
if (mysql_num_rows($result) != 0)
{
//отдаем контент
}
else
{
header('http/1.0 404 not found');
}

В итоге, к странице www.gs.ru/articles/kak-sdelat-true-site.html мы можем достучаться тока по этому адресу.

Если сделаете www.gs.ru/articles/Кak-sdelat-truE-site.html то получите 404 ошибку, так как поле регистрозависимое.

Сможете в данной ситуации сделать дубли?

На счет:

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

Вариант не самый тру. ИМХО

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

А можно через index.php в корне(классика жанра) все это дело разруливать.

ЗЫ. такой вариант очень редко прокатывает(разница 115 лет), потому что за эти 115 лет уже за нас всё 100500 раз придумано, продумано, протестировано, отлажено и нам остается тока взять и заюзать!

Подпись))
DiAksID
На сайте с 02.08.2008
Offline
236
#33
Ladycharm:
Иначе, как модуль articles.php узнает на какой ЧПУ-шный URL надо прописать этот canonical для переданного ему id?..

вообще то, для CMS в качестве внутреннего canonical используется как раз id страницы 😂 ни больше ни меньше. а сформировать нужный URL из заданного id уже работа роутера системы, точно также как он формирует URL-ы в менюхах и ссылках на документы, ничего "руками" писать не надо. а внутренний роутер должен быть в самых зачуханных CMS, хотя бы для перенаправления на 404 или 403, без него никак.

тупо в шаблон станицы вставляется link canonical с "ссылкой" на саму себя - и пофиг на возможные левые ссылки "конкурентов". если встроена пагинация и/или архив - роутер так же должен автоматом отловить нужные GET-ы и скорректировать URL в canonical, иначе система просто не будет работать сама по себе.

ЗЫ: из предыдущих постов, есть подозрение, что вам объяснять что то бесполезно 🙄 но может кому то пригодится, хотя приём банальнейший, а причина паранойи - бред полный...

show must go on !!!...
L
На сайте с 07.12.2007
Offline
351
#34
Милованов Ю.С:
Сможете в данной ситуации сделать дубли?

Не смогу, конечно.

Этот подход обработки url полностью исключает формирование дублей внешними факторами.

[Удален]
#35

А может вам записать курс по нормальному движку и выложить в сеть? Даже за деньги.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#36
Ladycharm:
Не смогу, конечно.
Этот подход обработки url полностью исключает формирование дублей внешними факторами.

Разница между Вашим подходом и нашим в масштабируемости, количестве директорий и файлов.

Захотели что-то изменить в структуре вообщем:

у Вас - правим все индексные файлы в папках new, articles, category, ...

у Нас - правиться 1 файл.

Посмотрите ради интереса опенКарт, там как раз все реализовано через 1 индекс.пхп в корне, да и ВП помоему точно также реализован.

WeberSeo:
А может вам записать курс по нормальному движку и выложить в сеть? Даже за деньги.

Коллектив серча VS Попов

Потом будет кричать что количеством взяли:)

Идея давно есть в голове, но проблема в том, что у многих людей здесь не найдется на это время. А самому делать это нет особого желания, потому что вдруг что-то упущу:)

ЗЫ. да и начинать это делать с мыслью о перспективе курса оказаться на торент-трэкерах... как-то не стоит.

Станислав
На сайте с 27.12.2009
Offline
258
#37

а я вобще не советую иметь урлы вида

/articles/kak-sdelat-true-site.html 

само название урла 100500 будет формироваться на стороне скрипта, а если будет формироваться, то тогда и урл появиться одинаковый и будете потом думать, а почему вместо старой статьи при полном просмотре я вижу новую!

Правильнее думаю будет так

/articles/20-kak-sdelat-true-site.html 

Ну и конечно же как описал выше Милованов Ю.С, делать проверку на соответствие урла, хотя ИМХО параноидальное самолюбие владельца сайта от дублей страниц 🤪

А потом 500 тыщ проверок и запросов и при 100 хостов сервер на лопатки опрокидывается.

Наваждение..

А если кто то запостит ссылки на сайт вида

/articles/20-kak-sdelat-true-site.html&post=post 

или так

/articles/20-kak-sdelat-true-site.html?post=post 

Дубль? Ага! Давайте в роботсе еще запретим индексировать такие урлы и добавим пару десятков тысяч строк, чисто так для пищи роботу

Мы там, где рады нас видеть.
DiAksID
На сайте с 02.08.2008
Offline
236
#38
Ms-Dred:
... Ну и конечно же как описал выше Милованов Ю.С, делать проверку на соответствие урла, хотя ИМХО параноидальное самолюбие владельца сайта от дублей страниц 🤪 ...

обычно, в эту проверку ничего не стоит встроить 301 редирект на корректный для системы вариант урла страницы ;) тогда можно спокойно менять заголовки страниц и не трогать бедный .htsccess. лишний запрос - но оно того стоит, имхо...

F
На сайте с 13.01.2013
Offline
0
#39

посмотрите тул - http://www.httrack.com/ - быстро делает из динамики статику - так быстрее все работает и можно хостить без базы.

seo, security, programming ++
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#40
Ms-Dred:

само название урла 100500 будет формироваться на стороне скрипта, а если будет формироваться, то тогда и урл появиться одинаковый и будете потом думать, а почему вместо старой статьи при полном просмотре я вижу новую!

Борьба с одинаковыми урлами:

1) если сами пишем ЧПУ в форме добавления поста

AJAX-запросом проверяем, есть ли в базе такой ЧПУ и если нет - все ОК, если есть - говорим добавлятелю(админ, редактор, ваш вариант) что измените УРЛ.

2) Если есть механизм, который транслитирует название поста в ЧПУ:

При добавлении в БД также смотрим, есть ли такой ЧПУ уже в базе. Если нет - все ОК, если есть, конкатенируем к названию time() - самый бредовый вариант, который пришел в голову. Так что одинаковость ЧПУ разных записей не проблема, над которой стоит заморачиваться.

Чтобы не делали дубли подставлением GET данных в урл делаем следующее:


if (count($_GET) > Х)
{
header('http/1.0 404 not found');
}

Х мы берем в зависимости от нашего ЧПУ. В моем варианте 2 параметра - url=$1&rewrite=1, то есть Х будет равен 2

1 2345 6

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