для принудительного добавления слеша нужно вставить в htaccess еще 3 строчки:
RewriteCond %{DOCUMENT_ROOT}/$0.html -fRewriteRule ^news/[^/.]+$ $0/ [L,R=301]
что означает:
если при добавлении ".html" получается существующий файл,
и если запрашивается адрес, в котором после "news/" нет точек и слешей,
то выполняется 301 редирект на то же самое, но с добавлением завершающего слеша
добавьте базу реврайта (еще одну строчку в файл), чтоб стало так:
RewriteEngine onRewriteBase /RewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteCond %{REQUEST_FILENAME} -fRewriteRule ^(news/[^/]+)\.html$ $1/ [L,R=301]RewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteCond %{DOCUMENT_ROOT}/$1.html -fRewriteRule ^(news/[^/]+)/$ $1.html [L]
а исключение дубликатов страниц уже сделано в этих строчках
Сначала избавляемся от дубликатов, делаем 301 редирект страничек с расширением на адрес без расширения
RewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteCond %{REQUEST_FILENAME} -fRewriteRule ^(news/[^/]+)\.html$ $1/ [L,R=301]
Далее делаем реврайт (без редиректа) на файл html, когда будет запрошен адрес без расширения
RewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteCond %{DOCUMENT_ROOT}/$1.html -fRewriteRule ^(news/[^/]+)/$ $1.html [L]
Эти преобразования будут применяться ко всем без исключения файлам с расширением "html" в корне каталога "news"
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule !(^$|.*\.(css|jpg|gif)) / [R=301,L]
Во второй строке нужно прописать файлы (и/или расширения), для которых не нужно делать редирект
Сейчас там запрещен редирект для корня сайта и для файлов .css .jpg .gif
foreach($array[0] as $object) { foreach($array[1] as $action) { foreach($array[2] as $direction) { print $object.''.$action.''.$direction.'<br />'; } } }
Попробуйте добавить в теге "object"
<param name="flashVars" value="link1=адрес_прехода_по_клику />
А в теге "embed"
FlashVars="link1=адрес_прехода_по_клику"
(например перед quality="high")
вставив вместо "адрес_прехода_по_клику" свое значение.
Но это сработает только если в данном файле SWF встроено получение адреса для перехода из переменной "link1".
Может быть там вообще не предусмотрен переход по клику, или переход происходит по адресу заданному внутри флешки, или адрес ищется в переменной с другим именем (не "link1").
Уточняйте это у создателя баннера.
Используйте вместо "www.site.ru" переменную "%{HTTP_HOST}", тогда как кто зашел, так его и переадресует (с www или без)
А чтоб при редиректе исчезло все что после "?", нужно в конце строки адреса для редиректа добавить "?"
RewriteCond %{QUERY_STRING} (^showtopic=|^act) RewriteRule ^index.php http://%{HTTP_HOST}/? [R=301,L] RewriteRule ^lofiversion/ http://%{HTTP_HOST}/archive [R=301,L]
Возможно у Вас срабатывает условие
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
(его часть /[^.]*$ подходит под преобразованный адрес, но чтоб точно сказать это нужно еще знать какие каталоги у Вас реально есть на сервере)
Попробуйте вместо команды Redirect (из модуля mod_alias) использовать правила RewriteRule (из модуля mod_rewrite)
Тем более у Вас везде используется именно модуль mod_rewrite
А для того, чтобы исключить применение правил к уже преобразованным адресам, воспользуйтесь назначением переменной (например RVR)
В самое начало нужно поставить проверку переменной, и сделать выход без преобразований, если переменная есть (при повторном проходе по файлу htaccess к имени переменной программа добавляет "REDIRECT_")
В том место, где у Вас стоят команды
Redirect permanent /katalog/polochnye/ http://www.site.ru/catalog/stellaji-polochnie/
Redirect permanent /katalog/polochnye/1/ http://www.site.ru/catalog/stellaji-...j-s-proletami/
(вместо них) поставьте следующее:
RewriteCond %{ENV:REDIRECT_RVR} ^yes$RewriteRule .* - [L]RewriteRule ^katalog/polochnye/$ catalog/stellaji-polochnie/ [R=301,L,E=RVR:yes]RewriteRule ^katalog/polochnye/1/$ catalog/stellaji-polochnie/stellaj-s-proletami/ [R=301,L,E=RVR:yes]и так далее...
RewriteCond %{REQUEST_URI} !^index\.php$ RewriteRule .* index.php?id=$0 [QSA,L]
т.е. любой адрес будет обрабатываться index.php, но посетитель этого не будет знать
добавить в .htaccess папки "coupons"
RewriteRule ^[^./]+$ $0.html [L,R=301]
если "coupons/shop.html" и ему подобные реальные файлы,
то еще лучше сделать так
RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME}.html -fRewriteRule ^[^./]+$ $0.html [L,R=301]
если реальной папки "coupons" нет, то написать в .htaccess в корне сайта
RewriteRule ^coupons/[^./]+$ $0.html [L,R=301]