Перейти к публикации

Рекомендованные сообщения

Как убрать ID публикации из URL новости:

1. Открываем файл /engine/engine.php и ищем код:

// ################ Новость целиком #################

            if ($subaction != '' or $newsid) {

                if (! $newsid) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";

                else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where  id = '$newsid'";


                if ($subaction == '') $subaction = "showfull";

            }

        }
заменяем на:
// ################ Новость целиком #################  

            if ($subaction != '' or $_GET['newsid']) {  

                if (! $_GET['newsid']) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";  

                else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where  alt_name = '{$_GET['newsid']}'";  


                if ($subaction == '') $subaction = "showfull";

            }

        }
2. В файлах /engine/modules/show.short.php, show.custom.php, topnews.php ищем:
if( $row['category'] and $config['seo_type'] == 2 ) {  


                    $full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";  


                } else {  


                    $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";  


                }  


            } else {  


                $full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";  

            }  


        } else {  


            $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];  


        }
и заменяем на:
if( $row['category'] and $config['seo_type'] == 2 ) {  


                    $full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" .  $row['alt_name'] . ".html";  


                } else {  


                    $full_link = $config['http_home_url'] .  $row['alt_name'] . ".html";  


                }  


            } else {  


                $full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";  

            }  


        } else {  


            $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['alt_name'];  


        }
3. Открываем файл /.htaccess и ищем:
RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]
заменяем на:
RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L]
ищем:
RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]
заменяем на:
RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L]
вырезаем и вставляем в самый конец файла следующий код:
# Сам пост

RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&cstart=$5&news_name=$6 [L]

RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&news_name=$5 [L]

RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$ engine/print.php?subaction=showfull&year=$1&month=$2&day= $3&news_page=$4&news_name=$5 [L]

RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day= $3&news_name=$4 [L]


RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]

RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]

RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3 [L]

RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L]


RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]

RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]

RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2 [L]

RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L]
4. Что бы со старых типов ссылок шло перенаправление на ссылки нового вида необходимо открыть файл /engine/modules/show.full.php, найти код:
@header( "HTTP/1.0 404 Not Found" );

msgbox( $lang['all_err_1'], $lang['news_err_12'] );

}
и заменить на:
preg_match("/([0-9]*)-(.+?).html$/i", $_SERVER["REQUEST_URI"], $res);

if(intval($res[1]) > 0){

header('HTTP/1.1 301 Moved Permanently');

header('Location: '.$config['home_url'].$res['2'].'.html');

exit;

}

}
найти:
$news_found = TRUE;
ниже добавить:
if($config['allow_alt_url'] == "yes"){


preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );


if($row['alt_name'] != trim($parse_alt_name[1]) )$news_found = FALSE; if( !$news_found ) break;


}
Провёл выше указанные операции, ссылки стали без ID, но возникла проблема в DLE 9.2 полная новость не отображается :( Помогите пожалуйста решить сию проблему. Вот сайт где возникла проблема http://www.rapcorp.net/ при переходе на полную новость страница без новости :(
// ################ Новость целиком #################  

            if ($subaction != '' or $_GET['newsid']) {  

                if (! $_GET['newsid']) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";  

                else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where  alt_name = '{$_GET['newsid']}'";  


                if ($subaction == '') $subaction = "showfull";

            }

        }

Вот что-то тут походу изменить нужно.

Изменено пользователем Fucktor
Ссылка на сообщение
Поделиться на других сайтах

Отличный хак.

Совместно с форумом на DLE косяков не будет?

Какие недостатки в себе несёт использование, помимо того, что наверное ссылки все в поисковиках заново будут переиндексироваться?

ЗЫ я не понимаю, зачем этот айди в адресной строке вообще нужен в стандартной сборке??

Ссылка на сообщение
Поделиться на других сайтах

ЗЫ я не понимаю, зачем этот айди в адресной строке вообще нужен в стандартной сборке??

чтобы случайно не получилось дублей + гугл ньюс требует, чтобы был ID.

Ссылка на сообщение
Поделиться на других сайтах

Как убрать ID публикации из URL новости

Нафига? :) Я вот видел народ наоборот убирает из ЧПУ название новостей, а оставляет чисто id, выглядит типа http://sait.ru/news/123.html

Ссылка на сообщение
Поделиться на других сайтах

Дубли не появятся, если самому вбивать название ЧПУ.

А что за гугль-ньюс?

Я вот видел народ наоборот убирает из ЧПУ название новостей, а оставляет чисто id, выглядит типа http://sait.ru/news/123.html

и доменное имя сменить на айпи

живем ведь в век цыфровых технологий!!

Ссылка на сообщение
Поделиться на других сайтах

Какие недостатки в себе несёт использование

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

Ссылка на сообщение
Поделиться на других сайтах

и доменное имя сменить на айпи

живем ведь в век цыфровых технологий!!

Не вижу связи... Зато вот ссылочки то короче полчаются ;)

Ссылка на сообщение
Поделиться на других сайтах

+ Нужно добавить проверку alt_name при добавлении новости.

Если alt_name существует то скрипт добавляет _2 / _3 / _4 ( test_title_2 ) в конец alt_name.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
  • 3 месяца спустя...

500 Internal Server Error.

Почему так выходит? Сделал все правильно, проверил несколько раз

У меня тоже такое выходит на 9.2., после последнего изменения в .htaccess

Ссылка на сообщение
Поделиться на других сайтах

Да, вот и у меня тоже на 9.2 проблема возникла, не показывало полную новость. Хотя на главной вид ссылок действительно изменился и стал без ID, но вот не рабочие они.

К тому же, рабочих примеров я еще ниразу не встречал. ShapeShifter и Fucktor, что у вас получилось то? Какая версия ДЛЕ? Покажите как работает. А то такое ощущение, что гон это.

Ссылка на сообщение
Поделиться на других сайтах

В прочем... после пары переделок, заработало, только не работают статические страницы.

Что я изменил?

1. В шаге №3:

# Сам пост

RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]

RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]

RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3 [L]

RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L]

RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]

RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]

RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2 [L]

RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L]

2. В шаге №4 не стал добавлять этого:

if($config['allow_alt_url'] == "yes"){

preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );

if($row['alt_name'] != trim($parse_alt_name[1]) )$news_found = FALSE; if( !$news_found ) break;

}

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

На 9.4 не работает все страницы идут на главную пример partner.xwara.ru. Почему так может кто подскажет?

Изменено пользователем YXX
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
  • 2 недели спустя...

500 Internal Server Error.

Почему так выходит? Сделал все правильно, проверил несколько раз

500 Internal Server Error.

Почему так выходит? Сделал все правильно, проверил несколько раз

У меня тоже такое выходит на 9.2., после последнего изменения в .htaccess

Вероятно у вас ограничение на количество правил в данном файле. Уточните у хотера.

Ссылка на сообщение
Поделиться на других сайтах

Подскажите а кто нибудь, встречал хак полностью противоположный этому .. чтобы убрать заголовок поста и оставить только ID ?

Заранее спасибо.

Изменено пользователем mr.8pa4
Ссылка на сообщение
Поделиться на других сайтах

mr.8pa4,

для этого не нужен хак. это есть в настройках системы - ТИП ЧПУ

Ссылка на сообщение
Поделиться на других сайтах

/index.php?newsid=1683

это не то ... я о том чтобы было так (к примеру)

/1743.html или /1743 или /1743/

чтобы не вставляло ЧПУ URL статьи:

а статья определялась и имела переход по одному ID , так как в таких URL мало смысла

пример таких урлов

http://www.kinopoisk.../1/film/491724/

всяко лучше смотрится чем

/1750-sekretnaya-sluzhba-santy-shaluny-protiv-poslushnyh-prep-and-landing-naughty-vs-nice.html

Изменено пользователем mr.8pa4
Ссылка на сообщение
Поделиться на других сайтах

ну убери в генерации ссылки ALT_NAME и будет тебе счастье, htaccess править не нужно

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Поделитесь рабочим хаком для DLE 9.5

Да, не плохо было бы, под DLE 9.5, а то не работает.

Та же проблема, при клике на статью, на главной странице, не выводиться статья, а пустая страница.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...