Привіт, друзі. Хочу представити вашій увазі другу частину з циклу статей про засеошивание движка Datalife Engine. І сьогодні ми поговоримо про дуже пікантний момент — дублювання контенту, пов’язане з відображенням однієї і тієї ж сторінки за різними адресами url.
Давайте згадаємо одне з основних правил оптимізації сайту — сторінка повинна бути доступна тільки по одному url! На жаль, при розробці движка DLE, програмісти не сильно переймалися цим моментом і забили, а може не подумали, чи просто сподівалися, що ніхто не стане балуватися з адресами, а всі користувачі мережі, поширюючи наш контент через залишення зовнішніх посилань на форумах або соцмережах, будуть дотримуватися структуру нашого сайту і правильність адрес. Ага, як би не так…
А адже одного разу порушена посилання може призвести до розмноження таких «неправильних» посилань, які спричинять за собою появу «неправильних» сторінок, що однозначно згубно позначиться на нашому сайті!
І мета сьогоднішнього посту — запобігти появі таких «неправильних» сторінок, а так же позбутися від уже з’явилися. І найголовніше — треба зробити так, щоб «неправильні» посилання вели на потрібні (тобто «правильні») сторінки.
Пост оновлено 5 травня 2014 року:
Оновлені вносяться зміни в движок, додана підтримка нових версій движка.
Актуально для таких версій DLE: 7.x, 8.x, 9.x, 10.x!
Інші частини SEO-керівництва:
Частина 1, Оптимізація заголовків Title — http://alaev.info/blog/post/2373
Частина 3, Особливості внутрішньої оптимізації движка — http://alaev.info/blog/post/3294
Частина 4, Виправлення версії DLE 9.3, 9.4, 9.5, 9.6 — http://alaev.info/blog/post/3513
Для початку нам необхідно оцінити розмах трагедії, зрозуміти які і в якій кількості можуть з’явитися дублі.
Для зручності розуміння я оформив всі у вигляді таблички, де ви можете в першому стовпці побачити, які дублі можуть виникнути, а у другому стовпці вказана основна сторінка, на яку повинен бути здійснений 301 редирект, якщо зробити все правильно!
Можливий дубль | 301 | Головна сторінка |
Головна сторінка http://site.ru) | ||
http://www.site.ru | -> | http://site.ru |
http://site.ru/index.php | -> | http://site.ru |
http://site.ru/page/1/ | -> | http://site.ru |
Сторінка категорії (http://site.ru/category/) | ||
http://site.ru/category | -> | http://site.ru/category/ |
http://site.ru/category/page/1/ | -> | http://site.ru/category/ |
Сторінка субкатегорії, якщо є вкладеність (http://site.ru/cat/subcat/) | ||
http://site.ru/cat/subcat | -> | http://site.ru/cat/subcat/ |
http://site.ru/cat/subcat/page/1/ | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat/ | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat | -> | http://site.ru/cat/subcat/ |
http://site.ru/subcat/page/1/ | -> | http://site.ru/cat/subcat/ |
Сторінка материнської категорії, якщо є вкладеність (http://site.ru/cat/) | ||
http://site.ru/cat | -> | http://site.ru/cat/ |
http://site.ru/cat/page/1/ | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat/ | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat | -> | http://site.ru/cat/ |
http://site.ru/subcat/cat/page/1/ | -> | http://site.ru/cat/ |
Сторінка повній новині, яка нехай належить категорії truecat (http://site.ru/truecat/123-news-name.html) | ||
http://site.ru/truecat/123-bla-bla-bla-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/fakecat/123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
http://site.ru/truecat/page,1,1,123-news-name.html | -> | http://site.ru/truecat/123-news-name.html |
Як бачите, дублів дофіга і більше! І чим складніша структура сайту, тим більше вірогідність появи несподіванок. Так чи інакше, але прочитавши цей пост до кінця, ви зможете вирішити всі ці проблеми, а внутрішні дублі контенту вас ніколи більше не потривожать.
Тут дуже важливий момент про слово «ніколи» — мається на увазі, що після оновлення до нової версії движка, ви перевірите свій сайт на наявність проблем і при необхідності внесете всі правки!
Ще одне дуже важливе відступ! Перед внесенням правок перевірте версію встановленого у вас движка. Розробники з недавнього часу все-таки почали звертати увагу на наведені проблеми, а тому поступово їх виправляють. Так що деякі моменти вже вирішені в останніх версіях, і я про це пам’ятаю, і перед кожною правкою я буду акцентувати вашу увагу на те, для якої версії це актуально, а який ні.
На момент написання посту остання версія движка DLE 9.5. Важливо знати, що починаючи з версії 9.3 розробники вирішили деякі проблеми – позбавилися від можливого дублювання, пов’язаного з переглядом повній новини та деяких проблем з категоріями. У будь-якому випадку, я рекомендую всім і завжди оновлюватися до останньої версії.
Отже, якщо ви розумієте про що я написав вище, то приступайте до подальшого вивчення.
Склейка дзеркал — вибираємо головне дзеркало www.site.ru або site.ru
Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.
Які проблеми вирішуємо:
- Повне дублювання сайту за адресами http://site.ru і http://www.site.ru
Розкрити список правок
Відкриваємо файл .htaccess, який знаходиться в корені сайту (це там, де лежить основний index.php)
ЗНАХОДИМО:
RewriteEngine On |
RewriteEngine On
НИЖЧЕ ДОДАЄМО:
(якщо в якості основного дзеркала вибрано http://site.ru)
### START Визначаємо головне дзеркало як site.ru (site.ru замінити на свій домен, наприклад alaev.info) RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] ### END Визначаємо головне дзеркало |
### START Визначаємо головне дзеркало як site.ru (site.ru замінити на свій домен, наприклад alaev.info)
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
### END Визначаємо головне дзеркало
(якщо в якості основного дзеркала вибрано http://www.site.ru)
### START Визначаємо головне дзеркало як www.site.ru (www.site.ru замінити на свій домен, наприклад www.alaev.info) RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L] ### END Визначаємо головне дзеркало |
### START Визначаємо головне дзеркало як www.site.ru (www.site.ru замінити на свій домен, наприклад www.alaev.info)
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
### END Визначаємо головне дзеркало
Сховати список правок
Тепер не важливо, як користувачі будуть у браузері вводити адресу сайту, з www або без буде здійснюватися редирект на основне дзеркало сайту. Так само не важливо, яким чином стоять зовнішні посилання на сайт — вага всіх вхідних посилань збережеться і підсумовується для основного дзеркала.
Прибираємо index.php і index.html адреси головної сторінки
Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.
Які проблеми вирішуємо:
- Дублювання головної сторінки за адресами http://site.ru, http://site.ru/index.php і http://site.ru/index.html
Розкрити список правок
Відкриваємо файл .htaccess, який знаходиться в корені сайту (це там, де лежить основний index.php)
В КІНЦІ ДОДАЄМО:
### Редиректи з index.php або index.html на сайт RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/ RewriteRule .* / [R=301,L] |
### Редиректи з index.php або index.html на сайт
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/
RewriteRule .* / [R=301,L]
Сховати список правок
Тепер не буде виникати найпоширенішого дубля головної сторінки, а так само дублів категорій та інших розділів.
Склеюємо адреси сторінок /page/1/ з основними адресами для головної сторінки категорій
Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.
Які проблеми вирішуємо:
- Дублювання головної сторінки сайту за адресами http://site.ru/page/1/ і http://site.ru/
- Дублювання основної (першої) сторінки категорії за адресами http://site.ru/category/page/1/ і http://site.ru/category/
Розкрити список правок
Відкриваємо файл .htaccess, який знаходиться в корені сайту (це там, де лежить основний index.php)
ЗНАХОДИМО:
### END Визначаємо головне дзеркало |
### END Визначаємо головне дзеркало
НИЖЧЕ ДОДАЄМО:
### START Редирект з першої сторінки на основну RewriteBase / RewriteRule ^(.*)page/1(/|)$ $1 [R=301,L] ### END Редирект з першої сторінки на основну |
### START Редирект з першої сторінки на основну
RewriteBase /
RewriteRule ^(.*)page/1(/|)$ $1 [R=301,L]
### END Редирект з першої сторінки на основну
Для підстраховки або якщо варіант з .htaccess не спрацював. Відкриваємо файл /engine/engine.php
ЗНАХОДИМО:
if (($subaction == “showfull” or $subaction == “addcomment”) and ((! isset ( $category ) or $category == “”))) { |
if (($subaction == “showfull” or $subaction == “addcomment”) and ((! isset ( $category ) or $category == “”))) {
ВИЩЕ ДОДАЄМО:
if ( (intval($_GET[‘cstart’]) == 1) && (strpos($_SERVER[‘REQUEST_URI’], ‘/page/1’) !== false) ) { $first_page_url = str_replace ( “/page/1”, “”, $_SERVER[‘REQUEST_URI’] ); header(“HTTP/1.0 301 Moved Permanently”); header(“Location: $first_page_url“); die(“Redirect”); } |
if ( (intval($_GET[‘cstart’]) == 1) && (strpos($_SERVER[‘REQUEST_URI’], ‘/page/1’) !== false ) {
$first_page_url = str_replace ( “/page/1”, “”, $_SERVER[‘REQUEST_URI’] );
header(“HTTP/1.0 301 Moved Permanently”);
header(“Location: $first_page_url”);
die(“Redirect”);
}
Сховати список правок
Тепер при введенні неправильного адреси з /page/1/ на кінці, буде здійснюватися редірект на основну сторінку.
Усуваємо плутанину з категоріями їх вкладеністю і слешем / на кінці
Актуальність: Тільки версії DLE 8.2-9.2. Для DLE 9.3 і вище необхідно ОБОВ’ЯЗКОВО у налаштуваннях движка активувати опцію «Обробляти невірні URL ЧПК».
Які проблеми вирішуємо:
- Дублювання сторінок категорій за адресами без слеша і зі слешем на кінці
- Дублювання сторінок пагинации за адресами без слеша і зі слешем на кінці
- Дублювання сторінок категорій і підкатегорій при порушенні ієрархії(вкладеності)
Розкрити список правок
Відкриваємо файл /engine/engine.php (дивимося в районі 170-180 рядка)
ЗНАХОДИМО:
if ($do == “cat” and $category != “ and $subaction == “) { |
if ($do == “cat” and $category != “and $subaction == “) {
НИЖЧЕ ДОДАЄМО:
//рішення проблеми з категоріями, редирект на вірний урл, додавання слеша в кінець if( $config[‘allow_alt_url’] == “yes” AND $category_id AND $view_template != “rss”) { $re_cat = get_url( $category_id ); if ($re_cat != $_GET[‘category’] OR substr ( $_SERVER[‘REQUEST_URI’], – 1, 1 ) != ‘/’ ) { $re_url = explode ( “index.php”, strtolower ( $_SERVER[‘PHP_SELF’] ) ); $re_url = reset ( $re_url ); header(“HTTP/1.0 301 Moved Permanently”); header(“Location: {$re_url}{$re_cat}/”); die(“Redirect”); } } //рішення проблеми з категоріями, редирект на вірний урл, додавання слеша в кінець |
//рішення проблеми з категоріями, редирект на вірний урл, додавання слеша в кінець
if( $config[‘allow_alt_url’] == “yes” AND $category_id AND $view_template != “rss”) {
$re_cat = get_url( $category_id );
if ($re_cat != $_GET[‘category’] OR substr ( $_SERVER[‘REQUEST_URI’], – 1, 1 ) != ‘/’ ) {
$re_url = explode ( “index.php”, strtolower ( $_SERVER[‘PHP_SELF’] ) );
$re_url = reset ( $re_url );
header(“HTTP/1.0 301 Moved Permanently”);
header(“Location: {$re_url}{$re_cat}/”);
die(“Redirect”);
}
}
//рішення проблеми з категоріями, редирект на вірний урл, додавання слеша в кінець
Сховати список правок
Тепер не буде ніякої плутанини в до ах адрес категорій і підкатегорій. Для всіх неправильних варіантів буде здійснюватися 301-редирект на основну правильну сторінку.
Усуваємо проблему з дублюванням повної новини за різними адресами
Актуальність: Тільки версії DLE 8.2-9.2. Для DLE 9.3 і вище читайте виправлення помилок нових версій DLE 9.3, 9.4, 9.5, 9.6.
Які проблеми вирішуємо:
- Дублювання новин, розбитих на сторінки, коли існували дві однакові сторінки за адресами site.ru/page,1,123-news_name.html і site.ru/123-news_name.html
- Дублювання новин з коментарями, розбитими на сторінки, коли існували дві однакові сторінки за адресами site.ru/page,1,1,123-news_name.html і site.ru/123-news_name.html
- Дублювання новини, коли здійснювався перехід на неіснуючу сторінку коментарів
- Дублювання новини за помилку в назві новини, наприклад, site.ru/123-bla_bla_news_name.html — спрацює редирект на правельный адреса site.ru/123-news_name.html
Розкрити список правок
Відкриваємо файл /engine/modules/show.full.php
ЗНАХОДИМО:
} else { $full_link = $config[‘http_home_url’] . “index.php?newsid=” . $row[‘id’]; $print_link = $config[‘http_home_url’] . “engine/print.php?newsid=” . $row[‘id’]; $short_link = “”; } |
} else {
$full_link = $config[‘http_home_url’] . “index.php?newsid=” . $row[‘id’];
$print_link = $config[‘http_home_url’] . “engine/print.php?newsid=” . $row[‘id’];
$short_link = “”;
}
ВИЩЕ ДОДАЄМО:
//обробка неправильного alt-name та 301 редирект $true_link = $config[‘http_home_url’] . substr ($_SERVER[‘REQUEST_URI’], 1); if ($row[‘allow_comm’]) { //якщо можна коменти $conf_comm_by_page = intval( $config[‘comm_nummers’] ); // ком на стор з налаштувань $news_comm_num = $row[‘comm_num’]; // загальна кількість комм $comm_page_count = @ceil( $news_comm_num / $conf_comm_by_page ); if ( ($comm_page_count >= 2) && (intval($_REQUEST[‘cstart’]) >= 2) ) $full_link = $link_page . intval($_REQUEST[‘cstart’]) . “,” . $news_name . “.html”; } if ($news_page >= 2) $full_link = $link_page . $news_name . “.html”; if ($true_link != $full_link) { header(‘HTTP/1.1 301 Moved Permanently’); header (‘Location: ‘ . $full_link); die(); } //обробка неправильного alt-name та 301 редирект |
//обробка неправильного alt-name та 301 редирект
$true_link = $config[‘http_home_url’] . substr ($_SERVER[‘REQUEST_URI’], 1);
if ($row[‘allow_comm’]) { //якщо можна коменти
$conf_comm_by_page = intval( $config[‘comm_nummers’] ); // ком на стор з налаштувань
$news_comm_num = $row[‘comm_num’]; // загальна кількість комм
$comm_page_count = @ceil( $news_comm_num / $conf_comm_by_page );
if ( ($comm_page_count >= 2) && (intval($_REQUEST[‘cstart’]) >= 2) ) $full_link = $link_page . intval($_REQUEST[‘cstart’]) . “,” . $news_name . “.html”;
}
if ($news_page >= 2) $full_link = $link_page . $news_name . “.html”;
if ($true_link != $full_link) {
header(‘HTTP/1.1 301 Moved Permanently’);
header (‘Location:’ . $full_link);
die();
}
//обробка неправильного alt-name та 301 редирект
Сховати список правок
Отже, тепер при будь-яких помилках введення до а новини сайту буде здійснюватися редирект на вірну адресу — головним ідентифікатором у цьому випадку працює id новини.
Ось і все, друзі! Всі проблеми, що здавалися такими масштабними зважилися не такими вже й великими правками файлів движка. Тепер можете перевірити будь-які проблемні адреси із зазначених мною на початку посту — все буде оброблятися так, як ми цього хочемо, а правильніше сказати, все буде оброблятися так як це полюблять пошуковики, тепер у нас ніколи не трапиться дублів!
Прибираємо слеш в кінці url — редирект зі сторінки зі слешем в кінці на сторінку без слеша
А тепер самий спірний пункт сьогоднішнього керівництва – розбираємося з дублями пов’язаними з наявністю слеша / в кінці адрес категорій і сторінок пагинации.
УВАГА!!! Правки, наведені нижче, застосовні ТІЛЬКИ ДЛЯ ВЕРСІЙ DLE 8.x 9.0 і 9.2. Якщо ви спробуєте застосувати правки для будь-яких інших версій, це повністю виведе з ладу ваш сайт!
Все, що написано нижче, призначене для тих, хто пішов минулого редакції мого керівництва і прибрав слеші в кінці, щоб позбутися від дублів.
Цей же мануал призначений для тих, кому просто не подобається слеш в кінці. Такі ж бувають, так?
У будь-якому разі, якщо ви зібралися прибрати слеш, треба буде зробити все, що описано вище (крім пункту «Усуваємо плутанину з категоріями їх вкладеністю і слешем / на кінці»), а так само внести ще декілька змін.
Обробляємо категорії:
Розкрити список правок
Відкриваємо файл /engine/engine.php і знаходимо:
if ($do == “cat” and $category != “ and $subaction == “) { |
if ($do == “cat” and $category != “and $subaction == “) {
НИЖЧЕ додаємо:
//рішення проблеми з категоріями, редирект на вірний урл, видалення слеша в кінець if( $config[‘allow_alt_url’] == “yes” AND $category_id AND $view_template != “rss”) { $re_cat = get_url( $category_id ); if ($re_cat != $_GET[‘category’] OR substr ( $_SERVER[‘REQUEST_URI’], – 1, 1 ) == ‘/’ ) { $re_url = explode ( “index.php”, strtolower ( $_SERVER[‘PHP_SELF’] ) ); $re_url = reset ( $re_url ); header(“HTTP/1.0 301 Moved Permanently”); header(“Location: {$re_url}{$re_cat}“); die(“Redirect”); } } //рішення проблеми з категоріями, редирект на вірний урл, видалення слеша в кінець |
//рішення проблеми з категоріями, редирект на вірний урл, видалення слеша в кінець
if( $config[‘allow_alt_url’] == “yes” AND $category_id AND $view_template != “rss”) {
$re_cat = get_url( $category_id );
if ($re_cat != $_GET[‘category’] OR substr ( $_SERVER[‘REQUEST_URI’], – 1, 1 ) == ‘/’ ) {
$re_url = explode ( “index.php”, strtolower ( $_SERVER[‘PHP_SELF’] ) );
$re_url = reset ( $re_url );
header(“HTTP/1.0 301 Moved Permanently”);
header(“Location: {$re_url}{$re_cat}”);
die(“Redirect”);
}
}
//рішення проблеми з категоріями, редирект на вірний урл, видалення слеша в кінець
Сховати список правок
Тепер зробимо перевірку всіх адрес на наявність слеша в кінці, і якщо він є — робимо 301 редирект на сторінку без слеша.
Розкрити список правок
Відкриваємо наш улюблений .htaccess і знаходимо:
### END Визначаємо головне дзеркало |
### END Визначаємо головне дзеркало
НИЖЧЕ додаємо:
### START Прибираємо слеш в кінці RewriteRule ^(.+)/$ $1 [R=301,L] ### END Прибираємо слеш в кінці |
### START Прибираємо слеш в кінці
RewriteRule ^(.+)/$ $1 [R=301,L]
### END Прибираємо слеш в кінці
Сховати список правок
Внесені правки роблять тільки редирект, але в движку за замовчуванням усі адреси генеруються зі слешем на кінці, а отже без правки генерації адрес движка сам редирект майже даремний.
Прибираємо слеші з URL категорій, що генеруються движком:
Розкрити список правок
Відкриваємо файл /engine/modules/functions.php і шукаємо Функцію function get_categories ($id)
Знаходимо рядок:
if( $config[‘allow_alt_url’] == “yes” ) $list = “\”“ . $config[‘http_home_url’] . get_url( $id ) . “/\”>{$cat_info[$id][‘name’]}”; |
if( $config[‘allow_alt_url’] == “yes” ) $list = “{$cat_info[$id][‘name’]}”;
Замінюємо на:
if( $config[‘allow_alt_url’] == “yes” ) $list = “\”“ . $config[‘http_home_url’] . get_url( $id ) . “\”>{$cat_info[$id][‘name’]}”; |
if( $config[‘allow_alt_url’] == “yes” ) $list = “{$cat_info[$id][‘name’]}”;
Знаходимо рядок:
if( $config[‘allow_alt_url’] == “yes” ) $list = “\”“ . $config[‘http_home_url’] . get_url( $parent_id ) . “/\”>{$cat_info [$parent_id][‘name’]}” . ” » “ . $list; |
if( $config[‘allow_alt_url’] == “yes” ) $list = “{$cat_info
[$parent_id][‘name’]}” . “» ” . $list;
Замінюємо на:
if( $config[‘allow_alt_url’] == “yes” ) $list = “\”“ . $config[‘http_home_url’] . get_url( $parent_id ) . “\”>{$cat_info [$parent_id][‘name’]}” . ” » “ . $list; |
if( $config[‘allow_alt_url’] == “yes” ) $list = “{$cat_info
[$parent_id][‘name’]}” . “» ” . $list;
Приховати цей список правок і розкрити наступний
Прибираємо слеші з URL пагинации, що генеруються движком:
Розкрити список правок
Відкриваємо файл: /engine/modules/show.short.php
Знаходимо рядок:
$prev_page = $url_page . “/”; |
$prev_page = $url_page . “/”;
Замінюємо на:
$prev_page = $url_page . “”; |
$prev_page = $url_page . “”;
Знаходимо рядок:
$prev_page = $url_page . “/page/” . $prev . “/”; |
$prev_page = $url_page . “/page/” . $prev . “/”;
Замінюємо на:
$prev_page = $url_page . “/page/” . $prev . “”; |
$prev_page = $url_page . “/page/” . $prev . “”;
Знаходимо:
$pages .= “\”“ . $url_page . “/\”>$j “; |
$pages .= “$j “;
Замінюємо:
$pages .= “\”“ . $url_page . “\”>$j “; |
$pages .= “$j “;
Знаходимо:
$pages .= “\”“ . $url_page . “/page/” . $j . “/\”>$j “; |
$pages .= “$j “;
Замінюємо:
$pages .= “\”“ . $url_page . “/page/” . $j . “\”>$j “; |
$pages .= “$j “;
Знаходимо:
if( $config[‘allow_alt_url’] == “yes” ) $pages .= “\”“ . $url_page . “/\”>1 \”nav_ext\”>{$lang[‘nav_trennen’]} “; |
if( $config[‘allow_alt_url’] == “yes” ) $pages .= “1
{$lang[‘nav_trennen’]} “;
Замінюємо:
if( $config[‘allow_alt_url’] == “yes” ) $pages .= “\”“ . $url_page . “\”>1 \”nav_ext\”>{$lang[‘nav_trennen’]} “; |
if( $config[‘allow_alt_url’] == “yes” ) $pages .= “1
{$lang[‘nav_trennen’]} “;
Знаходимо:
$pages .= “\”“ . $url_page . “/\”>$j “; |
$pages .= “$j “;
Замінюємо:
$pages .= “\”“ . $url_page . “\”>$j “; |
$pages .= “$j “;
Знаходимо:
$pages .= “\”“ . $url_page . “/page/” . $j . “/\”>$j “; |
$pages .= “$j “;
Замінюємо:
$pages .= “\”“ . $url_page . “/page/” . $j . “\”>$j “; |
$pages .= “$j “;
Знаходимо:
if( $config[‘allow_alt_url’] == “yes” ) $pages .= $nav_prefix . “\”“ . $url_page . “/page/{$enpages_count}/\”>{$enpages_count}“; |
if( $config[‘allow_alt_url’] == “yes” ) $pages .= $nav_prefix . “{$enpages_count}”;
Замінюємо:
if( $config[‘allow_alt_url’] == “yes” ) $pages .= $nav_prefix . “\”“ . $url_page . “/page/{$enpages_count}\”>{$enpages_count}“; |
if( $config[‘allow_alt_url’] == “yes” ) $pages .= $nav_prefix . “{$enpages_count}”;
Знаходимо:
$next = $url_page . ‘/page/’ . $next_page . ‘/’; |
$next = $url_page . ‘/page/’ . $next_page . ‘/’;
Замінюємо:
$next = $url_page . ‘/page/’ . $next_page . “; |
$next = $url_page . ‘/page/’ . $next_page . “;
Приховати цей список правок і розкрити наступний
Прибираємо слеші з URL профілів користувачів, що генеруються движком:
Розкрити список правок
Відкриваємо файл: /engine/modules/profile.php
Знаходимо рядок:
if( $config[‘allow_alt_url’] == “yes” ) $link_profile = $config[‘http_home_url’] . “user/” . urlencode( $row[‘name’] ) . “/”; |
if( $config[‘allow_alt_url’] == “yes” ) $link_profile = $config[‘http_home_url’] . “user/” . urlencode( $row[‘name’] ) . “/”;
Замінюємо на:
if( $config[‘allow_alt_url’] == “yes” ) $link_profile = $config[‘http_home_url’] . “user/” . urlencode( $row[‘name’] ); |
if( $config[‘allow_alt_url’] == “yes” ) $link_profile = $config[‘http_home_url’] . “user/” . urlencode( $row[‘name’] );
Приховати цей список правок і розкрити наступний
Прибираємо слеші з URL тегів, що генеруються движком:
Розкрити список правок
Відкриваємо файл: /engine/modules/show.short.php
Знаходимо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “/\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Замінюємо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Відкриваємо файл: /engine/modules/tagscloud.php
Знаходимо:
$tags[] = “\”“.$config[‘http_home_url’].“tags/”.urlencode($value[‘tag’]).“/\” class=\”{$value[‘size’]}\” title=\”“.$lang [‘tags_count’].” “.$value[‘count’].“\”>”.$value[‘tag’].“”; |
$tags[] = “”.$value[‘tag’].””;
Замінюємо:
$tags[] = “\”“.$config[‘http_home_url’].“tags/”.urlencode($value[‘tag’]).“\” class=\”{$value[‘size’]}\” title=\”“.$lang [‘tags_count’].” “.$value[‘count’].“\”>”.$value[‘tag’].“”; |
$tags[] = “”.$value[‘tag’].””;
Знаходимо:
$tpl->result[‘tags_cloud’] .= “ “.$config[‘http_home_url’].“tags/\”>”.$lang[‘all_tags’].“”; |
$tpl->result[‘tags_cloud’] .= “
“.$lang[‘all_tags’].””;
Замінюємо:
$tpl->result[‘tags_cloud’] .= “ “.$config[‘http_home_url’].“tags\”>”.$lang[‘all_tags’].“”; |
$tpl->result[‘tags_cloud’] .= “
“.$lang[‘all_tags’].””;
Знаходимо:
$tags[] = “\”“.$config[‘http_home_url’].“tags/”.urlencode($value[‘tag’]).“/\” class=\”{$value[‘size’]}\” title=\”“. $lang[‘tags_count’].” “.$value[‘count’].“\”>”.$value[‘tag’].“”; |
$tags[] = “”.$value[‘tag’].””;
Замінюємо:
$tags[] = “\”“.$config[‘http_home_url’].“tags/”.urlencode($value[‘tag’]).“\” class=\”{$value[‘size’]}\” title=\”“. $lang[‘tags_count’].” “.$value[‘count’].“\”>”.$value[‘tag’].“”; |
$tags[] = “”.$value[‘tag’].””;
Відкриваємо файл: /engine/modules/show.custom.php
Знаходимо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “/\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Замінюємо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Відкриваємо файл: /engine/modules/show.full.php
Знаходимо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “/\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Замінюємо:
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “\”“ . $config[‘http_home_url’] . “tags/” . urlencode( $value ) . “\”>” . $value . “”; |
if( $config[‘allow_alt_url’] == “yes” ) $tags[] = “” . $value . “”;
Відкриваємо файл: /engine/engine.php
Знаходимо:
if ($config[‘allow_alt_url’] == “yes”) $s_navigation .= ” » \”“ . $config[‘http_home_url’] . “tags/\”>” . $lang [‘tag_cloud’] . ” » “ . $tag; |
if ($config[‘allow_alt_url’] == “yes”) $s_navigation .= “» ” . $lang
[‘tag_cloud’] . “» ” . $tag;
Замінюємо:
if ($config[‘allow_alt_url’] == “yes”) $s_navigation .= ” » \”“ . $config[‘http_home_url’] . “tags\”>” . $lang [‘tag_cloud’] . ” » “ . $tag; |
if ($config[‘allow_alt_url’] == “yes”) $s_navigation .= “» ” . $lang
[‘tag_cloud’] . “» ” . $tag;
В черговий раз відкриваємо .htaccess
Знаходимо:
# висновок окремому тегу RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L] RewriteRule ^tags/([^/]*)/page/([0–9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L] |
# висновок окремому тегу
RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
Замінюємо:
# висновок окремому тегу RewriteRule ^tags$ index.php?do=tags [L] RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L] RewriteRule ^tags/([^/]*)/page/([0–9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L] |
# висновок окремому тегу
RewriteRule ^tags$ index.php?do=tags [L]
RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
Приховати цей список правок
Ну ось і все! Велику роботу ми з вами виконали, однак. Але воно того варте.
Я ще раз хочу звернути увагу на всі зміни пов’язані з убиранием слеша на кінці.
Будь ласка, зверніть увагу! Пост періодично оновлюється, так що деякі коментарі можуть ввести вас в оману. З обережністю ставитеся до стороннім варіантів правок, описаним в коментарях.
З повагою, Олександр Алаєв