Слэш в конце категорий - проблема

12
R5
На сайте с 16.04.2018
Offline
8
1116

Добрый день!

Помогите решить проблему:

Решил добавить слэш в конце категорий- сайт.ру/категория/

добавляется кодом-

<?php

function pcl_smart_trailingslashit($string) {
/* ensure, that there is one trailing slash */
$string = rtrim($string, '/') . '/';
/* if there is a filename extension like .html or .php, then remove the trailing slash */
if ( 0 < preg_match("#\.[^/]+/$#", $string) ) {
$string = rtrim($string, '/');
}
return $string;
}
add_filter('user_trailingslashit', 'pcl_smart_trailingslashit');
?>

И всё работает но после того как страница закэшировалась (WP Super Cache), становиться доступна страница без слэша (сайт.ру/категория).

После очистки кэша всё опять работает (переадресация на страницу со слэшем).

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

Samail
На сайте с 10.05.2007
Offline
330
#1

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
R5
На сайте с 16.04.2018
Offline
8
#2

Уточните пожалуйста это (для.htaccess) в замен кода переведенного выше ?

Samail
На сайте с 10.05.2007
Offline
330
#3

да, вместо того кода

R5
На сайте с 16.04.2018
Offline
8
#4
Samail:
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

К сожалению этот вариант не подходит так как он добавляет слэш в конце страниц тоже.

сайт.ру/категория/post.html/

Samail
На сайте с 10.05.2007
Offline
330
#5

RS485, страницы всегда на .html заканчиваются? Или может другие есть признаки как отличить страницу от категории?

R5
На сайте с 16.04.2018
Offline
8
#6
Samail:
RS485, страницы всегда на .html заканчиваются? Или может другие есть признаки как отличить страницу от категории?

Да все страницы и записи заканчиваются на html (page.html post.html)

Рубрика /rubrika/

Пагинация /rubrika/page/2/

Samail
На сайте с 10.05.2007
Offline
330
#7

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} !(.*)\.html$ [NC]
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Или вообще так:


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} !(.*)\.[^/]{2,5}$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

В первом случае не добавляются слэши адресам заканчивающимся на .html, во втором заканчивающимся на "точка и от 2 до 5 символов после точки", 5 можно на 10 поменять если попадаются расширения длиннее.

R5
На сайте с 16.04.2018
Offline
8
#8
Samail:
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} !(.*)\.html$ [NC]
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Или вообще так:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} !(.*)\.[^/]{2,5}$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

В первом случае не добавляются слэши адресам заканчивающимся на .html, во втором заканчивающимся на "точка и от 2 до 5 символов после точки", 5 можно на 10 поменять если попадаются расширения длиннее.

Большое спасибо за помощь.

Вроде подошел вот этот вариант (пока тестирую):

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://site.ru/$1/ [L,R=301]

Код который указывал в верху не удалял (без него почемуто не работает)

dma84
На сайте с 21.04.2009
Offline
167
#9
RS485:
Решил добавить слэш в конце категорий- сайт.ру/категория/

Нужно так: "решил создать себе проблему на ровном месте".

Зачем?

R5
На сайте с 16.04.2018
Offline
8
#10
dma84:
Нужно так: "решил создать себе проблему на ровном месте".
Зачем?

Лишнего прочитал:)

https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий