нужна помощь с htaccess для настройки нестандартной ситуации с ЧПУ

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем ihrik, 5 янв 2011.

  1. ihrik

    ihrik

    Регистр.:
    24 янв 2009
    Сообщения:
    310
    Симпатии:
    91
    Помогите ребята разобраться с одним проблемным сайтом :(
    Получилась на одном сайте проблема с ЧПУ
    что ссылка на любую страницу открывалась
    как с розширением .html так и без
    то есть новость можно было открыть по любому из этих вариантов
    site.com/cat/news
    site.com/cat/news.html
    Проблема была в движке,сейчас сменил..ссылки все отсались как и были..только вот могу сделать или с .html или без
    Так вот не знаю как поступить в данной ситуации, так как поисковики каждую страницу проиндексировали как хотели..некоторые в выдаче с .html другие без
    И причем сайт продвигался тоже так же как попало..покупались ссылки..делались прогон..на разные варианты страниц
    Очень бы не хотелось потерять уже существующую выдачу.
    Я решил что здесь можно помочь редиректом, только вот как это правильно сделать не знаю.
    Я это вижу вот так:
    что при заходе на любую из этих ссылок
    site.com/cat/news
    site.com/cat/news.html
    шло пере направление на site.com/cat/news.html
    Заранее благодарен за ответы на следующие вопросы:;)
    Как организовать на сайте такой редирект с помощью htaccess ?
    Не потеряю ли я позиции в этом случаи?
    Или есть какой то другой вариант решения данной проблемы?
     
  2. FaLL3N

    FaLL3N Постоялец

    Регистр.:
    4 дек 2006
    Сообщения:
    100
    Симпатии:
    17
    Перенаправляй 301-м, не потеряешь позиции
    Распиши более детально структуру сайта, тебе нужен только редирект всего что вызывается через site.com/cat/* ?
     
  3. ihrik

    ihrik

    Регистр.:
    24 янв 2009
    Сообщения:
    310
    Симпатии:
    91
    нужен редирект всех ссылок на сайте , cat я зря указал, сайт визитка, и категорий как таких нету
     
  4. FaLL3N

    FaLL3N Постоялец

    Регистр.:
    4 дек 2006
    Сообщения:
    100
    Симпатии:
    17
    Код:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^.*/$
    RewriteCond %{REQUEST_URI} !^.*\.html
    
    RewriteRule .* $0.html [PT,L]
    
     
    ihrik нравится это.
  5. ihrik

    ihrik

    Регистр.:
    24 янв 2009
    Сообщения:
    310
    Симпатии:
    91
    FaLL3N не перенаправляет почему то(

    Сейчас в меня следующий файл .htaccess

    Код:
    DirectoryIndex index.php
    Options -Indexes
    
    #php_value memory_limit 128M
    #php_flag zend.ze1_compatibility_mode off
    
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]
    RewriteEngine On
    
    При смене на твои строчки почему то не открываются даже нормальные страницы

    Not Found
    The requested URL /poleznaya-informatsiya2.html was not found on this server.
     
  6. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    вышеприведенный код - дополнение к существующему htaccess, и его нужно добавить сразу после 'RewriteEngine On'
    только изменив флаги на
    Код:
    RewriteRule .* $0.html [R=301,L]
    а скрипт генерирует страницы взависимости от REQUEST_URI
     
    ihrik нравится это.
  7. ihrik

    ihrik

    Регистр.:
    24 янв 2009
    Сообщения:
    310
    Симпатии:
    91
    блин...самый мистический файл этот .htcacces
    очень благодарен FaLL3N и pitkina за то что откликнулись
    Делал так

    PHP:
    RewriteEngine On
    RewriteCond 
    %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteCond 
    %{REQUEST_URI} !^.*/$
    RewriteCond %{REQUEST_URI} !^.*\.html
    RewriteRule 
    .* $0.html [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteRule 
    .* index.php [L]
    RewriteEngine On
    и так:
    PHP:
    DirectoryIndex index.php
    Options 
    -Indexes

    #php_value memory_limit 128M
    #php_flag zend.ze1_compatibility_mode off

    RewriteEngine On

    RewriteCond 
    %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteRule 
    .* index.php [L]
    RewriteEngine On
    RewriteCond 
    %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteCond 
    %{REQUEST_URI} !^.*/$
    RewriteCond %{REQUEST_URI} !^.*\.html
    RewriteRule 
    .* $0.html [R=301,L]
    и как только уже не делал, и раком и боком и скоком
    Теперь какие ссылки хочет таки перенаправляет
    пример 1, перенаправляет
    http://musor/vyvoz-stroitelnogo-musora
    http://musor/Z:/home/musor/www/vyvoz-stroitelnogo-musora.html
    пример 2, не перенаправляет
    http://musor/nash-transport
    ссылки идентичны


    В HTML коде ссылки такого вида <a href="/nash-transport
    Замучился я уже с этим редиректом
    помогите добить как то...можно и за USD..icq в профиле
     
  8. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    видимо из-за особенностей сборки apache на денвере, ошибочно обрабатывется конструкция 'RewriteRule .* $0.html' и в результат передается весь файловый путь
    как решение только заменить на 'RewriteRule .* %{REQUEST_URI}.html'

    т.е. в итоге:
    Код:
    DirectoryIndex index.php
    Options -Indexes
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^.*/$
    RewriteCond %{REQUEST_URI} !^.*\.[a-z]{1,5}$ [NC]
    RewriteRule .* %{REQUEST_URI}.html [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]
     
    -Dima- и ihrik нравится это.
  9. ihrik

    ihrik

    Регистр.:
    24 янв 2009
    Сообщения:
    310
    Симпатии:
    91
    заработало :yahoo:!! Еще раз огромное спс pitkina
    действительно проблема была в сборке apache на денвере
    буду надеятся что с выдачей тоже ничего не случится после этих манипуляций со страницами