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

Как поменять url страницы


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

Здравствуйте!

site: www.narcisstroy.ru

Проблема с url добавляемой на сайт новости заключается в нумерации новости и окончании .html что то вроде:

http://www.narcisstr...pod-klyuch.html

Необходимо сделать так:

http://www.narcisstr...1h14-pod-klyuch

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

Хотелось бы услышать какие варианты у кого еще есть по поводу добавления новостей без №-ции и .html окончания?

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

Во первых - это не проблема. Во вторых - глупости.

http://www.google.ru...0%B2+Google&lr=

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

Практически везде для убирания id-новости нужно следующее:

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;

}

Дело в том что в php я мало что понимаю, и поэтому хочу ужнать ставил ли кто нибудь этот код и на сколько он является безопасным?

А то конкретного пояснения по этому вопросу я не нашел еще(

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

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

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

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

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

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

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

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

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

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