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

ihrik

Гуру форума
Регистрация
24 Янв 2009
Сообщения
311
Реакции
92
Помогите ребята разобраться с одним проблемным сайтом :(
Получилась на одном сайте проблема с ЧПУ
что ссылка на любую страницу открывалась
как с розширением .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 ?
Не потеряю ли я позиции в этом случаи?
Или есть какой то другой вариант решения данной проблемы?
 
Перенаправляй 301-м, не потеряешь позиции
Распиши более детально структуру сайта, тебе нужен только редирект всего что вызывается через site.com/cat/* ?
 
Перенаправляй 301-м, не потеряешь позиции
Распиши более детально структуру сайта, тебе нужен только редирект всего что вызывается через site.com/cat/* ?
нужен редирект всех ссылок на сайте , cat я зря указал, сайт визитка, и категорий как таких нету
 
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^.*/$
RewriteCond %{REQUEST_URI} !^.*\.html

RewriteRule .* $0.html [PT,L]

site.com/ -> без изминений
site.com/{существующий фал/папка в файловой системе} -> без изминений
site.com/test.html -> без изминений
site.com/test -> site.com/test.html
site.com/test/ -> без изминений
 
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.
 
вышеприведенный код - дополнение к существующему htaccess, и его нужно добавить сразу после 'RewriteEngine On'
только изменив флаги на
Код:
RewriteRule .* $0.html [R=301,L]
а скрипт генерирует страницы взависимости от REQUEST_URI
 
блин...самый мистический файл этот .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, перенаправляет

пример 2, не перенаправляет


В HTML коде ссылки такого вида <a href="/nash-transport
Замучился я уже с этим редиректом
помогите добить как то...можно и за USD..icq в профиле
 
видимо из-за особенностей сборки 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]
 
заработало :yahoo:!! Еще раз огромное спс pitkina
действительно проблема была в сборке apache на денвере
буду надеятся что с выдачей тоже ничего не случится после этих манипуляций со страницами
 
Назад
Сверху