Проблема Проблема с 301 редиректом в ссылке присутствует символ #

Тема в разделе "Общие вопросы оптимизации", создана пользователем Дмитрий1222, 23 мар 2015.

Статус темы:
Закрыта.
  1. Дмитрий1222

    Дмитрий1222 На форуме с: 23 мар 2015 Сообщения: 2

    Здравствуйте, форумчане!

    Суть проблемы НУЖНО НАСТРОИТЬ 301 редирект: Есть у меня интернет магазин www.site.ru был создан на конструкторе сайтов. В результате URL страниц выглядели таким образом:

    http://www.site.ru/#!police-1101/chq1

    Сайт второй год индексируется поисковиками, соответственно страницы попали в индекс имеют вес и занимают хорошие позиции.

    На данный момент купил движок, перенес на него сайт со всеми страницами (контентом). Теперь URL выглядят таким образом:

    http://www.site.ru/i...oca-1101-police

    Движок установлен на хостинг ДЖИНО.

    Пытался настроить 301 в файле .htaccess (кусок кода)

    RewriteEngine on

    RewriteRule ^#!police-1101/chq1$ /item/101-ehlektroshokek-fonar-oca-1101-police [R=301,L,NE]
    RewriteRule ^#!tw309/cfkx$ /item/102-ehlektroshoker-yaguar-tw-309 [R=301,L]
    RewriteRule ^#!osa704/c1m4d$ /item/104-ehlektroshoker-jsj-704-pro-udar-2u [R=301,L]
    RewriteRule ^#!bl1103/c1qmi$ /item/120-ehlektroshoker-cpecnaz-bl-1103 [R=301,L]
    RewriteRule ^#!bl-1201/cswm$ /item/105-ehlektroshoker-cpecnaz-bl-1201 [R=301,L]
    RewriteRule ^#!1102police/c220l$ /item/110-ehlektrshok-police-1102-ckorpion [R=301,L]
    RewriteRule ^#!yb1310-8810/c1z7r$ /item/107-ehlektroshok-specnaz-1310-molniya [R=301,L]
    RewriteRule ^#!osa1108/c7w8$ /item/108-ehlektroshoker-topgan-1108-titan [R=301,L]
    RewriteRule ^#!osa1106/c1ign$ /item/109-ehlektroshoker-topgan-1106-kobra [R=301,L]
    RewriteRule ^#!bl1203/ctg7$ /item/106-ehlektroshoker-cpecnaz-bl-1203 [R=301,L]
    RewriteRule ^#!yb1119a/c1ww3$ /item/111-dubinka-ehlektroshoker-yb-1119b-molniya [R=301,L]
    RewriteRule ^#!-/ce0x$ /item/116-teleskopicheskaya-dubinka [R=301,L]
    Не работает.
    Перенаправление срабатывает со страницами в которых нет постфикса #
    Например:
    RewriteRule ^about$ /item/101-ehlektroshokek-fonar-oca-1101-police [R=301,L]
    Писал в тех поддержку хостинга, ответ: "К сожалению создать редирект с ссылки #!police-1101/chq2 не представляется возможным, так как сервер не обрабатывает запросы после символа #."

    Помогите советом: Можно ли как то еще реализовать функцию 301 редиректа? Подскажите хостинг на котором возможно будет настроить переадресацию с URL с поствиксом # на URL без него.

    Вложения:

  2. egor1

    egor1 На форуме с: 1 май 2015 Сообщения: 2

    Сам пользуюсь Джино, и сайт на Joomla работает. Вот такой скрипт написал для своих нужд.
    Код:
    <?php
    class Redirect {
    
        private $index;
        private $site;
        public $uri;
        public $mode;
    
        public function __construct()
        {
            //Preparing for redirect
            $this->uri = $_SERVER['REQUEST_URI'];
            $this->site = 'http://тут ваш сайт.ru';
            $this->mode = 'dev';
    
            $this->set(array(
                    '/старая страница(обязательно со слешем в начале)' => '/новая страница (со слешем в начале обязательно)',
                ));
          
                    //Если вы пользуетесь CMS Joomla, а именно с Virtuemart, то при смене SEO суффикса у товара можно использовать такой простой код который перенаправляет со старой страницы с старым суффиксом на страницу с новым суффиксом, чтобы использовать эту функцию просто уберите два слеша в начале вызова функции ($this->suffix), и напишите в соотвествующих местах старый и новый суффиксы
          
                    //$this->suffix('старый суффикс','новый суффикс');
    
            $this->accept();
        }
    
        public function set($toSet)
        {
            if(!empty($toSet)){
                foreach($toSet as $from => $to){
                    $this->index[$from] = $to;
                }
            } else {
                if($this->mode != 'prod'){
                    echo "Nothing to redirect!";
                }
            }
        }
      
        public function suffix($old, $new)
        {
            if(eregi($old ,$this->uri)){
                if(!empty($old)&&!empty($new)){
                    $tmp = $this->uri;
                    $url = str_replace($old, $new, $tmp);
              
                    header('HTTP/1.1 301 Moved Permanently');
                    header('Location: ' . $this->site . $url);
                } else {
                    die('Empty suffix');
                }
                exit();
            }
        }
      
        public function accept()
        {
            if(!empty($this->index)){
                foreach($this->index as $key => $value){
                    if($this->uri == $key){
                        echo $this->site . $value;
                        header('HTTP/1.1 301 Moved Permanently');
                        header('Location: ' . $this->site . $value);
                        exit();
                    }
                }
            } else {
                if($this->mode == 'dev'){
                    echo "You don't have URL's to redirect!";
                }
            }
        }
    }
    Пользуйтесь.

    Вам надо только в index.php в самом начале написать
    require('файл скрипта.php');
    $var = new Redirect();

    P.S. Не знаю читает ли автор до сих пор этот тред, может кому то другому помогу!
    Дмитрий1222 нравится это.
  3. Дмитрий1222

    Дмитрий1222 На форуме с: 23 мар 2015 Сообщения: 2

    Автор читает. Спасибо egor1 буду пробовать. Страницы переиндексировались, но в поиске еще встречаются #! буду пробовать. Спасибо за ответ!
Статус темы:
Закрыта.