301 редирект на страницу со слэшом

12
D
На сайте с 08.09.2006
Offline
92
962

Добрый день!

Полазил по поиску, но так рабочего варианта 301 не нашёл.

Есть страницы http://site.ru/content/view/16/

но также эта же страница доступна по адресу http://site.ru/content/view/16

Как прописать 301 со страниц без "/" на страницу со "/" ?

artrozik
На сайте с 19.02.2008
Offline
180
#1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteRule (.+) $1/ [R=301,L]

ЗЫ Ошиблись разделом

D
На сайте с 08.09.2006
Offline
92
#2

товарищ, artrozik, спасибо за ответ, но не сработало.

artrozik:
ЗЫ Ошиблись разделом
artrozik
На сайте с 19.02.2008
Offline
180
#3

deasel, значит еще что то есть в htaccess, выкладывайте сюда.

D
На сайте с 08.09.2006
Offline
92
#4
artrozik:
deasel, значит еще что то есть в htaccess, выкладывайте сюда.

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

# Fix Apache internal dummy connections from breaking [(site_url)] cache

RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]

RewriteRule .* - [F,L]

# Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin

#RewriteCond %{HTTP_HOST} .

#RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]

#RewriteRule (.*) http://www.example.com/$1 [R=301,L]

# Exclude /assets and /manager directories and images from rewrite rules

RewriteRule ^(manager|assets)/*$ - [L]

RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

# For Friendly URLs

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Denisg
На сайте с 10.01.2008
Offline
136
#5

deasel, вообще блестяще!

ТС, а скажите пожалуйста - какая у вас система управления? Если это WordPress или любая другая, то, вероятнее всего у вас должны быть плагины - они обычно встраиваются сами.

Называется Sitemap XML генератор. SEO плагин All In One.

DO
На сайте с 20.01.2010
Offline
55
#6

deasel,

работает? добавьте сразу после RewriteEngine On


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

если нет, сделайте с помощью php (конечно, если у вас php))

что-то вроде такого:


if (!strpos($_SERVER['REQUEST_URI'],'.'))
{
if (substr($_SERVER['REQUEST_URI'],strlen($_SERVER['REQUEST_URI'])-1)!='/')
{
$url = $_SERVER['REQUEST_URI'].'/';
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://".$_SERVER['HTTP_HOST']."$url");
die();
}
}
платно проведу аудит сайта и исправлю все технические проблемы, которые могут мешать продвижению (/ru/forum/594052)
D
На сайте с 08.09.2006
Offline
92
#7

Заработало. Спасибо огромное!

dustyo_O:
deasel,
работает? добавьте сразу после RewriteEngine On


если нет, сделайте с помощью php (конечно, если у вас php))
что-то вроде такого:
Denisg
На сайте с 10.01.2008
Offline
136
#8

Можете указать в качестве ссылки на эту страницу свойство rel='canonical', таким образом Яндекс определит эту страницу как главную в выдаче. И не будет дублированного контента. Укажите страницу со слешом и всё.

DiAksID
На сайте с 02.08.2008
Offline
218
#9

в очередной раз 😂 выкладываю редирект для добавления слеша в конец адреса без префикса, универсальный:


RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule (.*) %1\/ [R=301,L]
show must go on !!!...
gormarket
На сайте с 29.12.2010
Offline
47
#10

DiAksID, есть пара поправок:

1. %{REQUEST_URI} не может содержать символ "?", это разделитель между %{REQUEST_URI} и %{QUERY_STRING} и не входит в эти переменные.

2. "%1\/" - это строка подстановки, а не регулярное выражение, и нет смысла экранировать здесь символы, имеющие специальное значение в регулярных выражениях.

И еще: каждые круглые скобки в регулярном выражении заставляют программу сохранять значение из этих скобок в переменной (типа %1,%2,$1,$2 и тому подобное). Может это требует незначительных ресурсов, но лучше не использовать скобки без необходимости.

Так что с учетом этого:


RewriteCond %{REQUEST_URI} ^.*/[^/.]+$
RewriteRule .* %0/ [R=301,L]
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
12

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