[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как убрать лишнее из url?
shyuser
Добрый день.

Понемногу осваиваю php и, как практика, знания постепенно применяю на сайте.
Адрес сайта Лукоянов.Ру. Понемногу развиваю движок для этого сайта по мере возможности.
В последнем обновлении добавил возможность статистики посетителей: когда, с какого ip и какую страницу посетили.
Оказалось, что наиболее частыми посетителями являются агенты поисковиков и они (раньше сайт был на Joomle) посещают для индексации ещё странички вида http://lukoyanov.ru/index.php/2009-09-12-1...0&Itemid=100029.

Такой странички, директорий нет и её надо сократить до http://lukoyanov.ru/index.php, переместить на главную страницу?

Или как агентам объяснить, что их нет и искать там нечего?

Возможно для этого нужно то то прописать в .htaccess.

С уважением, Сергей.



Спустя 10 минут, 44 секунды (14.08.2011 - 12:57) Xes написал(а):
Возможно, но помоему тема не втом разделе.
Цитата
Возможно для этого нужно то то прописать в .htaccess.

Помоему так оно и делатеся об этом куча всего в инете уже написано.
А это че рукописный движок? Помоему для постовых сайтов как ваш отлично подходит DLE

Спустя 7 минут, 6 секунд (14.08.2011 - 13:05) shyuser написал(а):
Цитата (Xes @ 14.08.2011 - 09:57)
А это че рукописный движок? Помоему для постовых сайтов как ваш отлично подходит DLE

Понимаю, использовал joomla. Потом начал изучать php и захотелось написать самому. Хорошая практика. Тем более делаю сайт один, поэтому особо никто не торопит.
А где эта куча написана, хоть ссылку киньте. Даже не знаю как запрос написать.

Спустя 4 минуты, 19 секунд (14.08.2011 - 13:09) Xes написал(а):
работа с htaccess

Спустя 29 минут, 7 секунд (14.08.2011 - 13:38) shyuser написал(а):
спасибо, но слишком обще. хочется, если не готового ответа, то более конкретного. до такого ответа я и сам уже давно дошёл.

Спустя 1 час, 20 минут, 49 секунд (14.08.2011 - 14:59) Белый Тигр написал(а):
Я бы составил регулярные выражения для определения нежелательных URL и в index.php встроил бы механизм проверки содержимого $_SERVER['REQUEST_URI']. Если вдруг оно совпадает с шаблоном ссылок оставшихся от Joomla, отсылал бы ответ с кодом 404
header("Status: 404 Not Found");

И через пару недель поисковики вообще бы забыли эти ссылки.
Можно, конечно, через htaccess. Например с помощью mod_rewrite отправлять на страницы с кодом 404, но это, наверное, сложнее будет в освоении и реализации, хотя в чём-то правильнее.

Спустя 5 минут, 35 секунд (14.08.2011 - 15:04) shyuser написал(а):
Белый Тигр
спасибо, попробую реализовать.

Спустя 4 часа, 17 минут, 18 секунд (14.08.2011 - 19:22) shyuser написал(а):
Написал вот такую функцию проверки:
/*
Проверяем url на правильность иначе возвращаем false для переправления на 404
*/

function verify_url() {
$url = $_SERVER['REQUEST_URI'];
if (strlen($url) >= 11) {// url очень длинный
$url = substr($url,0,11);
if (($url == '/index.php?') || ($url == '/admin.php?')) { //url cоответствует правильному шаблону
return true;
}
else { //url не соответствует правильному шаблону
return false;
}
}

else { //url настолько короткий, что может быть только index.php или admin.php
if ((strlen($url) == 1) || ($url === '/index.php') || ($url === '/admin.php')) { //url cоответствует правильному шаблону
return true;
}
else { //url не соответствует правильному шаблону
return false;
}
}
}

И вызов в файле index.php
...
if (!verify_url()) { //проверяем URL на правильность, иначе 404
header('HTTP/1.1 404 Not Found');
header("Status: 404 Not Found");
exit('<h1>Error 404 Несуществующая страница.</h1><p>К сожалению, запрошенный Вами документ не существует. Возможно этот файл был удален или переименован.</p><p>А пока предлагаем Вам пройти на <a href="http://'.$_SERVER['HTTP_HOST'].'">первую</a> страницу. </p>');
}
...

Возможно, что есть более простые варианты.
Спасибо за помощь. :)

P.S. Судя по статистике сайта агенты успокоились. :D

Спустя 3 часа, 19 секунд (14.08.2011 - 22:22) Белый Тигр написал(а):
Лучше все проверки из verify_url() уместить в регулярное выражение, кода станет в разы меньше.
А кроме index.php и admin.php скриптов на сайте больше нет?

Спустя 34 минуты, 9 секунд (14.08.2011 - 22:56) shyuser написал(а):
Цитата
Лучше все проверки из verify_url() уместить в регулярное выражение, кода станет в разы меньше.

Увы, в составлении регулярных выражений пока слабоват. smile.gif
Цитата
А кроме index.php и admin.php скриптов на сайте больше нет?

Есть, но они вызываются для сайта из index.php, для админки из admin.php, в зависимости от значения $_GET['mod'].

Спустя 1 час, 25 минут, 52 секунды (15.08.2011 - 00:22) Белый Тигр написал(а):
Мне или кажется из-за раннего утра, или этот код выдаёт 404 на любые URL кроме непосредственно "index.php" и "admin.php". Его работу хорошо тестировали?
Цитата
Увы, в составлении регулярных выражений пока слабоват smile.gif.

Значит есть к чему стремиться smile.gif

Спустя 6 часов, 16 минут, 56 секунд (15.08.2011 - 06:39) shyuser написал(а):
Цитата
Мне или кажется из-за раннего утра, или этот код выдаёт 404 на любые URL кроме непосредственно "index.php" и "admin.php".

У меня проблем нет. Позже попробую ещё на работе.
Цитата
Его работу хорошо тестировали?

Да тестировал. Сначала локально на Денвере. При этом функцию дополнял соответствующими выводами результата для проверки условий.
/*
Проверяем url на правильность иначе возвращаем false для переправления на 404
*/

function verify_url() {
$url = $_SERVER['REQUEST_URI'];
if (strlen($url) >= 11) {// url очень длинный
$url = substr($url,0,11);
if (($url == '/index.php?') || ($url == '/admin.php?')) { //url cоответствует правильному шаблону
echo 'url cоответствует правильному шаблону и >11';
return true;
}
else { //url не соответствует правильному шаблону
echo 'url не cоответствует правильному шаблону и >11';
return false;
}
}

else { //url настолько короткий, что может быть только index.php или admin.php
if ((strlen($url) == 1) || ($url === '/index.php') || ($url === '/admin.php')) { //url cоответствует правильному шаблону
echo 'url cоответствует правильному шаблону и <11';
return true;
}
else { //url не соответствует правильному шаблону
echo 'url не cоответствует правильному шаблону и <11';
return false;
}
}
}

В index.php и admin.php делал просто вызов данной функции:
verify_url();

Спустя 1 час, 56 минут, 7 секунд (15.08.2011 - 08:35) Белый Тигр написал(а):
А, всё. Не заметил сначала выражение
$url = substr($url,0,11);

Ранее утро было, спал почти :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.