Если всего одно число, то Array(N) означает создание пустого массива из N элементов (каждый из которых имеет значение "undefined")
Выход из положения, передать это число как строку (заключить в кавычки)
visible_param(Array("1"));
Возможен вариант передачи любого количества аргументов (не одной строкой, а отдельными числами или строками через запятую)
visible_param(1,2,3,4,5,6);
или
visible_param(1);
Тогда функция будет такой
function visible_param()
{
for(var i=0; i < arguments.length; i++) {
var val = arguments; var cont = document.getElementById(\'param_\' + val); cont.style.display = \'!important\'; } }
Вызывайте функцию так
visible_param(Array(1,2,3,4,5,6));
Или где-то создаете массив
var arrid = new Array(1,2,3,4,5,6);
а в нужный момент вызываете функцию, передавая его в качестве параметра
visible_param(arrid);
Невозможно при редиректе сохранить старый адрес не вставив его в новый урл, т.к. новый урл это единственный носитель, через который можно передать старый адрес.
Это справедливо и для php-редиректа (то что предложил Ragnarok) и для редиректа через .htaccess
Выглядеть это будет где-то так
RewriteRule ^старая_страница$ новая_страница?ref=$0 [L,R=301,QSA]
и получится "http://сайт/новая_страница?ref=старая_страница"
Есть правда надежда, что можно еще сделать это через cookie:
при редиректе через PHP сначала установить cookie со значением ref=старая_страница
и только потом сделать редирект на "http://сайт/новая_страница"
при редиректе через .htaccess тоже есть возможность установки cookie (добавление кроме флагов [L,R=301,QSA] еще и cookie [L,R=301,QSA,CO=ref:старая_страница:сайт], тогда добавлять в новый урл "?ref=старая_страница" не нужно.
А потом на новой странице из cookie получать источника реферера.
Но на практике назначение кук одновременно с редиректом делать мне не приходилось, нужно экспериментировать, может и получится.
Можно и при редиректе через .htaccess добавить в строку запроса прараметр "ref=старая_страница", а в PHP-коде страницы выдернуть содержимое этой переменной в качестве источника реферера
еще одно предложение:
попробуйте вынести вывод сообщения за пределы функции в setInterval
вместо
alert('OK');
использовать
setTimeout("alert('OK')", 100);
Или просто поменяйте местами две строки
сначала
clearInterval(socials.interval);
и только потом
(к сожалению добиться появления ошибки с моими браузерами не удается, все работает)
free-dev, попробуйте такой вариант ("or" вместо "||")
if(socials.myWin=='' or socials.myWin.closed)
Или еще так
if(socials.myWin)
if(socials.myWin != null)
DiAksID, есть пара поправок:
1. %{REQUEST_URI} не может содержать символ "?", это разделитель между %{REQUEST_URI} и %{QUERY_STRING} и не входит в эти переменные.
2. "%1\/" - это строка подстановки, а не регулярное выражение, и нет смысла экранировать здесь символы, имеющие специальное значение в регулярных выражениях.
И еще: каждые круглые скобки в регулярном выражении заставляют программу сохранять значение из этих скобок в переменной (типа %1,%2,$1,$2 и тому подобное). Может это требует незначительных ресурсов, но лучше не использовать скобки без необходимости.
Так что с учетом этого:
RewriteCond %{REQUEST_URI} ^.*/[^/.]+$RewriteRule .* %0/ [R=301,L]
код редиректа рабочий, проверил на локальном сервере
сделал папку razdel, в ней папку 555-slovo3-110 и положил туда файл index.php
в корневом .htaccess сайта добавил строку
RewriteRule ^(razdel/[0-9]+)-slovo1-slovo2-(.*)$ $1-$2 [R=301,L]
и обратился по адресу
http://www.test.ru/razdel/555-slovo1-slovo2-slovo3-110
в результате был перенаправлен на
http://www.test.ru/razdel/555-slovo3-110/
Почему не работает у Вас - могут быть десятки причин
например адрес задан кирилицей (в этом случае вообще не знаю как делать редирект, не сталкивался)
или у Вас есть реальная папка "раздел" а в ней лежит свой .htaccess (тогда редирект нужно задавать там, пробовал дбавить .htaccess в папку "razdel", редирект из корневого .htaccess сразу переставал работать )
или вы добавляете правило редиректа слишком рано (в начало файла, до строки RewriteEngine On), или слишком поздно (после правила, которое уже преобразовало URL)
Если у Вас сайт корректно отображает уже преобразованный URL (вида http://www.сайт.ru/раздел/555-слово3-110 ), то можно сделать еще такую попытку: поставить код сразу после строк
RewriteEngine On
RewriteBase /
и в нем сделать назначение переменной (например RWR) при редиректе и проверку этой переменной в первых строках, чтобы выйти из .htaccess без дальнейших преобразований при повторном проходе, если преобразование уже сделано:
RewriteCond %{ENV:REDIRECT_RWR} ^yes$RewriteRule .* - [L]RewriteRule ^(раздел/[0-9]+)-слово1-слово2-(.*)$ $1-$2 [R=301,L,E=RWR:yes]
(не забудьте заменить русские слова в правиле их реальным значением латиницей)
===========
Добавлено позже
У Вас на задано значение RewriteBase, поэтому в начало адреса добавляется физический путь на сервере
Либо добавьте строку
либо, если это неприемлимо, указывате полный путь при редиректе
RewriteRule ^.*/([0-9]+)-slovo1-slovo2-(.*)-([0-9]+)$ http://%{HTTP_HOST}/$1-$2-$3 [R=301,L]
Вот только в этом варианте у Вас теряется "razdel/", и будет
http://www.test.ru/555-slovo3-110/
Это Вы пытаетесь сделать редирект на http://www.сайт.ru/555-слово3-110, да и первый слеш не нужен
пробуйте так
RewriteRule ^(раздел/[0-9]+)-слово1-слово2-(.*)$ $1-$2 [R=301,L]
или так
RewriteRule ^(раздел/[0-9]+)-[^-]+-[^-]+-(.*)$ $1-$2 [R=301,L]
(если RewriteBase не задан, то перед $1 можно поставить слеш "/$1...")
Дальнейшие правила никак не могут перебросить на "на домен без ВВВ".
В приведенном фрагменте нет редиректов ниже добавленной строки, только реврайты, а они посетителю не видны.
Единственное объяснение, которое приходит в голову, это то что Вы заходите на
site.ru/tovar1/
и Вас перебрасывает на тот же домен (без www)
site.ru/tovar2/
Или может приведен не весь .htaccess
Попробуйте вместо Вашей одной строки использовать следующие две
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC]RewriteRule ^tovar1/$ http://www.%2/tovar2/ [R=301,L]
В первой строке извлекается имя домена без www (не важно с www или без был запрос)
Во второй строке идет 301 редирект с "tovar1/" на "tovar2/" на домен с www
Или одной строкой, с указанием конкретного имени домена с www
RewriteRule ^tovar1/$ http://www.site.ru/tovar2/ [R=301,L]