Сьогодні копався, намагаючись розібратися з 301 редиректами слеш на без слеша в категоріях на DLE 10.6. Перерва блог Алаїч-а та кілька інших джерел, так і не знайшов відповіді. Поліз розбиратися самостійно – рішення виявилося дуже простим!
301 редирект слеш на без слеша у категоріях DLE 10.6
План статьи [Скрыть]
1. Зайдіть на FTP. Відкрийте файл, який знаходиться за адресою /engine/engine.php. Знайдіть наступний шматок коду:
12345678910111213if
(
$config
[
'allow_alt_url'
] AND
$config
[
'seo_control'
] 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"
);
}
}
2. Замініть цей код на:
12345678910111213141516/* Пропатчений код URL категорій без слеша ПОЧАТОК */
if
(
$config
[
'allow_alt_url'
] AND
$config
[
'seo_control'
] 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"
);
}
}
/* Пропатчений код URL категорій без слеша КІНЕЦЬ*/
Змінилося насправді кілька знаків, але вони роблять те, що потрібно.
301 редирект слеш на без слеша у статтях DLE 10.6
1. У корені знайдіть файл .htaccess, у ньому знайдіть наступний код:
123456789101112131415#Cам пост
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&seourl=$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&seourl=$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&seourl=$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&seourl=$4 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]
RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L]
2. Замініть його на такий:
1234567891011121314151617181920212223242526#редирект статей слеш на без слеша
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
# Сам пост
RewriteBase /
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).(.*)$ 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]+),(.*).(.*)$ 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]+),(.*).(.*)$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$2 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$2&newsid=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/([0-9]+)-(.*)$ index.php?newsid=$2 [L]
RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$2&news_page=$1 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$1&newsid=$2 [L]
RewriteRule ^([0-9]+)-(.*)$ index.php?newsid=$1 [L]