Усовершенствованное решение этого варианта: http://krylov.org.ua/?p=1130
.htaccess
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
Работает для http://site.com/dir1///dir2
но проблема остается в адресах типа http://site.com///uri (несколько слешей после домена)
Решение на php:
if(stristr($_SERVER['REQUEST_URI'],'//')){
$uri=preg_replace('#/{2,}#','/',$_SERVER['REQUEST_URI']);
header('Location: '.$uri,false,301);
exit;
}
В примере необходимо генерировать в URL фильтрацию по цене только в том случае, если пользователь сам изменил ползунок выбора цены.
Т.е. нужно не передавать определенные параметры в _GET (по ситуации).
Часть формы (добавляем hidden поля):
<form method="get" action="" id="filter_form">
от <input type="text" name="price_from" id="price_from" value="100"/>
до <input type="text" name="price_to" id="price_to" value="1000"/>
<input type="hidden" id="price_min" value="100"/>
<input type="hidden" id="price_max" value="1000"/>
</form>
Яваскриптом дисаблим inputы, если их значения не меняли.
$(function(){
$("#filter_form").submit(function(){
if($("#price_from").val()==$("#price_min").val()){
$("#price_from").attr("disabled","disabled");
}
if($("#price_to").val()==$("#price_max").val()){
$("#price_to").attr("disabled","disabled");
}
});
});
Усовершенствованный вариант: https://krylov.org.ua/htaccess-dubli-stranits-s-neskolkimi-slesham-2/
Необходимо настроить 301 редирект со всех страниц, где в теле URL больше одного слеша подряд (за исключением http:// и знаков «/» в конце URL) на аналогичные URL с одним знаком «/».
Также необходимо настроить 301 редирект со всех страниц, где в конце URL присутствует знак «/» на аналогичные URL без знака «/».
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
Если DocumentRoot у 2 доменов один и тот же (одна папка) и нужно сделать редирект с одного определенного домена на другой.
RewriteCond %{HTTP_HOST} ^olddomain\.spb\.ru
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
Если сайты в разных папках и проверка на домен не нужна (всегда редирект в не зависимости от домена — первая строка не нужна)
Варианты:
User-agent: *
Disallow: *
Allow: /$
User-agent: *
Allow: /$
Disallow: /
Спецсимволы:
* — любое количество символов (в т.ч. 0)
$ — конец строки
т.е. запрещаем все, разрешаем /
порядок неважен (выяснено экспериментальным путем)
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
$arrs=array('_GET','_POST','_COOKIE');
foreach($arrs as $arr_key=>$arr_value){
if(is_array($$arr_value)){
foreach($$arr_value as $key=>$value){
$nbz1=substr_count($value,'--');
$nbz2=substr_count($value,'/*');
$nbz3=substr_count($value,"'");
$nbz4=substr_count($value,'"');
if($nbz1>0||$nbz2>0||$nbz3>0||$nbz4>0){
Print404();
exit();
}
}
}
}
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=83821