Помогите убрать слеш "/" в конце адреса страницы ".html/"

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Abuza, 15 июл 2010.

Статус темы:
Закрыта.
  1. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    7
    Hi,

    подскажите пожалуйста какое правило необходимо прописать в htaccess для того, чтоб убрать слеш в конце адреса страницы.

    При обращении по адресу site.com/page.html/ выдается 200, а надо чтоб был 301 редирект на site.com/page.html чтоб избежать дублированного контента.

    Спасибо.
     
  2. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    после расширения не должно быть слеша... покажи свой htaccess.
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Код:
    RewriteRule ^(.+\.html)/?$ $1 [L,QSA]
    ну например вот такая строчка по идее убирает слэш
     
  4. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    7
    Вот все что находится в файле, но ничего влияющего на это нет, пробовал убирать.
    Вариант немного подправленный
    Код:
    RewriteRule ^(.*).html/ $1.html [R=301,L]
    AddType application/x-httpd-php .html .htm
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*).html/ $1.html [R=301,L]
    RewriteCond $2 !^(.*)
    rewritecond %{query_string} .
    RewriteRule ^(.*)$ http://www.site.com/?$2 [L]
    rewritecond $1 !^(page.php)
    rewritecond %{query_string} .
    RewriteRule ^(.*)$ http://www.site.com/$1? [R=301,L]
    RewriteCond %{HTTP_HOST} ^site.com
    RewriteRule (.*) http://www.site.com/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^.*/index.html
    RewriteRule ^(.*)index.html$ http://www.site.com/$1 [R=301,L]
    RewriteCond %{HTTP_HOST} !site.com
    RewriteRule (.*) - [G,L]
     
  5. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Убирайте /
    RewriteRule ^(.+\.html)/?$ $1 [L,QSA]
    RewriteRule ^(.*).html/ $1.html [R=301,L]
     
  6. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    7
    Не совсем правильно убирать слеш, так как возникает замкнутый цикл редиректов и таким образом оно не работает. Я использую второй вариант, так как первый не работает. Первый вариант можно подправить до
    Код:
    RewriteRule ^(.*\.html)/$ $1 [R=301,L]
    для правильного получения результата.

     
  7. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    ох... убирайте слеш и не будет никакого дублирования контента!

    Да и кто к расширению слеш добавляет? Браузеры не добавляют, поисковики не добавляют.
     
  8. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    7
    Не моглиб вы конкретизировать свою мысль, так как в htacces я использую только этот вариант
    Код:
    RewriteRule ^(.*).html/ $1.html [R=301,L]
    в котором если убрать слеш, то вообще сайт не работает:)
    В данном решении наоборот необходимо убрать слеш, который может быть добавлен как по ошибке так и целенаправленно после расширения. Браузеры и поисковики нет, а вот люди могут поставить ссылочку с слешем и если сервер отдаст 200 ОК, то с верменем она будет в индексе:)

    Это все требуется так как при обрашении к странице типа "http://www.site.com/page.html/" сервер отдает 200 ОК, чего не должно быть.


     
  9. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Попробуй добавить строку
    RewriteBase /
     
  10. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    7
    Это все есть и эта строка так же не влияет.
     
Статус темы:
Закрыта.