redirect страничук с суфиксом ".html" и без него

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем AntonR, 14 апр 2009.

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

    AntonR

    Регистр.:
    29 ноя 2007
    Сообщения:
    176
    Симпатии:
    75
  2. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(www\.site\.ru\/.*\/)page.html$ $1page [R=301,L]
    </IfModule>

    -----

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(www\.site\.ru\/.*\/)page$ $1page.html [R=301,L]
    </IfModule>
     
  3. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    Я думаю можно сделать универсальнее, не всегда ведь страница page:
    RewriteEngine on
    RewriteBase /
    RewriteRule (.*)\.html$ $1 [R=301,L]

    Либо наоборот:
    RewriteEngine on
    RewriteBase /
    RewriteRule (.*)$ $1.html [R=301,L]

    Но в последнем выражении, будет добавлять .html ко всем адресам, так что нужно следить чтобы не было двойного .html
     
    AntonR нравится это.
  4. AntonR

    AntonR

    Регистр.:
    29 ноя 2007
    Сообщения:
    176
    Симпатии:
    75
    О так как это отследить?!?! ведь в этом вся и фишка?
     
  5. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    Так я не понял, у вас страницы на сайте как называются с .html или без?
    Выбирайте уже свой вариант и делайте.

    Смысла создавать два одинаковых адреса нет, т.к. позабанят поисковики за дубликаты.

    upd:
    ну или если сильно хочется можно попробовать что нибудь типа такого вот так:

    RewriteEngine on
    RewriteBase /
    RewriteRule (.*)([^h][^t][^m][^l])?$ $1.html [R=301,L]
     
  6. AntonR

    AntonR

    Регистр.:
    29 ноя 2007
    Сообщения:
    176
    Симпатии:
    75
    Это ж я понимаю все про дубликаты, поэтому, и борось с этим :)!!!
    Сайт на Joomla, а ей все равно есть в конце .html или нету. Просто был глюк и сайт работал без .html и наплодились странички без .html в конце.
    Сейчас я хочу склеить все странички что появилися без .html.

    +

    подскажите, пожалуйста, по этой конструкции если 2 домена нужно склеивать:

    RewriteCond %{HTTP_HOST} ^www\.site2\.ru [NC]
    RewriteCond %{HTTP_HOST} ^.site2\.ru [NC]
    RewriteCond %{HTTP_HOST} ^.site1\.ru [NC]
    RewriteRule ^(.*)$ http://www.site1.ru/$1 [L,R=301]

    Правильно ли?
    +
    как сделать, чтобы странички, которые не заканчиваются на .html, все же заканчивалися?
     
  7. oraculseed

    oraculseed Постоялец

    Регистр.:
    1 янв 2009
    Сообщения:
    152
    Симпатии:
    10
    всмысле ты хочеш чтоб тебе мод_реврайт сам все заменил ? ты вообще принцип мод реврайта понимаешь ?
     
  8. AntonR

    AntonR

    Регистр.:
    29 ноя 2007
    Сообщения:
    176
    Симпатии:
    75
    не, ну я хочу ко всем страничкам которые не заканчиваются на .html добавить .html!
    Что так разве нельзя?!
     
  9. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    С джумлой, я не работал, осоебенностей не знаю, но:
    тогда проверьте последний мой пассаж, должно помочь.
    Да, должно работать. Еще в robots.txt нужно указать главный сайт.
    Если только через mod_rewrite то попробуйте, как я написал. А вообще, у меня предчувствие, что в джумле можно как-то это все настроить и исправить.

    Добавлено через 6 минут
    Даже можно вот так:
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond {%REQUEST_URL} !\.html$
    RewriteRule (.*)$ $1.html [R=301,L] 
    
     
Статус темы:
Закрыта.