Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Редирект только если код 200

Здравствуйте.
SEOшник поставил задачу сделать на сайте редирект с адресов без слеша на адреса со слешем. Плюс редирект с www на без www.
Все это сделал через .htaccess:

RewriteCond %{HTTP_HOST} ^www\.kedrprom\.ru
RewriteRule ^(.*)$ http://kedrprom.ru/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

Теперь делаю страницу 404. И тут возникла проблема. SEOшник просит сделать так, чтобы редирект при не найденной странице не происходил, а сразу отображалась страница 404. Но у меня сначала сервер производит редирект, а уже потом битрикс выводит 404-ю страницу. Подскажите, как можно настроить сервер, чтобы он делал редиректы только если все нормально (код 200), а в остальных случаях показывал страницу 404.
Ответ: Зачем все так усложнять - редиректы оставить как есть, пусть сервер этим занимается, а насчет 404 использовать событие вывода буфера OnEpilog в нем определять выставлено на странице каким либо компонентом 404/существет ли запрошенный файл или нет и если все плохо подгружать 404. примеры такого подхода для битрикса можно в сети поискать. только нужно чтобы компоненты правильно настроены были.
Вопрос: Необходимо сделать редирект на https с использованием ЧПУ

Здравствуйте, столкнулся со следующей проблемой:
На сайте успешно используется ЧПУ, но появилась задача организовать редирект для всех страниц с http на https.
В данный момент имеются такие правила:
Код Code
1
2
3
4
5
6
7
8
9
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
 
# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
# https://www.domain.com when your cert only allows https://secure.domain.com
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^(.*)$ https://site.com/$1 [R=301,L]
Пробовал писать их в разном порядке, с различными флагами, но необходимого результата добиться не получилось. Работают либо только ЧПУ, либо только редирект, либо же происходит редирект, но при этом ЧПУ также редиректится в ссылку стиля site.com/index.php?php=ЧПУ
Ответ:
Сообщение от Amet13
Код Code
1
2
3
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Спасибо за ответ, но, к сожалению, это никак не помогло при решении проблемы. Результат такой же как я и описывал в стартовом сообщении. Редирект срабатывает, но ЧПУ перестаёт работать.
либо же происходит редирект, но при этом ЧПУ также редиректится в ссылку стиля site.com/index.php?php=ЧПУ
Вопрос: Редирект с www

Здравствуйте,продолжаем оптимизировать сайт и сегодня возник вопрос как сделать редирект с www Нашёл я такую проблему при анализе сайта на .Вбив в поиске на форуме здесь такое выражение я наткнулся на ответы типа "Редирект с мусорных страниц" "Редирект с на www.site.ru/forum" и всё в этом духе.А вот как мне настроить этот редирект?Если не сложно то более подробно пожалуйста С меня естественно + в репутацию
Ответ: Редирект на то и нужен, если кто-то вдруг надумает вбивать адрес вашего сайта с приставкой иначе бы домен www можно было вообще закрыть.
Вопрос: не понятный редирект

Ребят,помогите разобраться.
Joomla 2.5.14
Cайт лежит /home/www/site/ссылка
главная загружается,дальше переходишь по ссылке на сайте, он говорит материал не найден,и в адресной строке вот такая вот штука /home/www/RU/ссылка
Если поменять на /home/www/site/RU/ссылка - все отображается.
На сайте присутствует мультиязычность.

Заранее спасибо
Ответ: mod_rewrite включен? Как мультиязычность создавали - ничего не упустили? .htaccess не правили? Если правили - уберите правки и проверьте.
Вопрос: Редирект с мусорных страниц на нормальные

Здравствуйте, подскажите, как сделать редирект с мусорных страниц на нормальные?
Например, сервер на запрос отдал страницу:
если в конце приписать какой-то мусор, то сервер выдает, что Запрошенная страница не существует:

Но вместо этого нужно, чтобы при запросе с мусором в конце выполнялся редирект на нормальную страницу, например при таком запросе: , чтобы был редирект на
Ответ: Если /apache/thread1821342.html и т.п. – физически существующие файлы, чекайте на непустое значение PATH_INFO и QUERY_STRING (в условии нужно указать OR) и в случае успеха делайте редирект с обрезанием строки параметров. Иначе только через движок.
Вопрос: Редирект в htacess

Всем привет! Такая ситуация. На сайте нужно сделать редирект с

site.ru/forum/index.php на site.ru/forum/

и что то у меня не получается. Пробовал так Redirect 301 forum/index.php так возникает циклическая переадреасация. Помогите пожалуста, как сделать нормальный редирект.
Ответ: KOPOJI, в контексте .htaccess в маске правила не нужно указывать ведущий слеш. Остальное в общем-то правильно (хотя QSA без надобности, если вы не указываете своих параметров в подстановке). Но тут есть одно но: этот редирект может вступить в конфликт с рерайтом в index.php, поэтому во избежание данного конфликта для редиректа используют условие с THE_REQUEST, как выше показали. Про дубли вы все верно сказали, но у меня уже давно сложилось такое впечатление, что поисковики к дублям с именами индексных файлов достаточно понимающе относятся.
Вопрос: Скрыть элемент после редиректа

Вообщем какая стоит задача. Нужно сделать так, чтобы после редиректа на урл '/detail' у нас скрывался блок '.main-block'.
Пишу следующий код.
Javascript
1
2
3
4
window.location.replace('/detail');
$(document).ready(function(){
    $('.main-block').css('display', 'none');
});
Кол отрабатывает не верно. JS просто не находит '.main-block' после редиректа.

Вопрос такой. Что сделать чтобы '.main-block' все таки нашелся после редиректа?

Заранее спасибо!
Ответ: Owl123, После редиректа загружается уже новая страница. Соответственно про весь js предыдущей страницы он забывает. Все начинает исполняться с нуля.
Вопрос: Автоматический редирект

Подскажите как реализовать автоматический редирект на другую страницу, при этом что бы не было возможности вернуться на предыдущую страницу. Есть ли возможность такого?
Ну или ге можно о подобном почитать?
Ответ: Тут два варианта : либо html, либо php
На html
Код HTML5
1
<meta http-equiv='refresh' content='0; url=http://www.page.com>;
Php
Код PHP
1
2
header('Location: index.php');
exit();
У php есть небольшое преимущество он делает редирект, как только появляется функция, meta же загрузив страницу начинает выполнять редирект.
Вопрос: Редирект на сайт в jquery.js

Всем здравствуйте! Сделал рип сайта с templatemonster. Все файлы качал вручную. В итоге, когда поставил на CMS, при открытии сайта происходит редирект на основной сайт templatemonster.com. Файл, из-за которого происходит редирект jquery.js, пытался заменить его, подключив ту же версию с google, но в итоге сайт не работает. Понимаю, что копировать - это нарушение авторских прав, просто сайт всего на 1 месяц и 67$ платить не хочется да и времени очень мало...Скажите, что можно сделать? Файл jquery.js приложил
Ответ: отключил все кроме jquery.js - делает редирект...только при его отключении не работает + в шаблоне самом нет ни location.href ни location.replace
Вопрос: Редирект с URL на ЧПУ

Доброе время суток Не могу добиться результата, пытаюсь сделать редирект с
Код Code
1
index.php?module=cabinet
на
Код Code
1
/cabinet/
я написал рабочее правило для ЧПУ:
Код Code
1
RewriteRule ^cabinet/?$ /index.php?module=cabinet [L]
Но теперь выходит дубль, доступ к странице есть и с полного урл и с чпу Нужно что бы был доступ только с ЧПУ, то есть сделать редирект

Заранее благодарен
Ответ: Решил все же написать редирект с URL на ЧПУ

Если кому то нужно, поместите код в index.php и вуаля)

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    $url = $_SERVER['REQUEST_URI'];
    
    if($url != '/') {
        if(preg_match("/index.php/i", $url)) {
            $url = explode('&', $url);
            $redirect = "/";
            if(is_array($url)) {
                foreach ($url as $value) {
                    $value = explode("=", $value);
                    if(isset($value[1])) {
                        $redirect .= $value[1].'/';
                    }
                }
                exit(header("Location: $redirect"));
            } 
        }
    }