Перейти к содержанию
ivanosovsky

Redirect 301 не работает url c кириллицей

Рекомендуемые сообщения

Проблема с редиректом 301

например сайт my.su на нем созданы страницы содержащие кириллицу в ЧПУ например my.su/Ремонт%20квартир/

соответственно google благополучно эти страницы выкинул из индекса но т.к. на них основной вес надо было что-то делать

мое решение было такое: делаю дубли страниц на другой url например my.su/remont_kvartir/

и ставлю редирект 301  в .htaccess таким образом

Redirect 301 /Ремонт%20квартир/ http://my.su/remont_kvartir/

файл:

.htaccess - кодировка utf-8 (без BOM)

СОДЕРЖАНИЕ:

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Redirect 301 /Ремонт%20квартир/ http://my.su/remont_kvartir/
 
К сожалению этот Вариант не прокатил - никуда перенаправления не идет
Кто подскажет как реализовать, с утра бьюсь, думал все просто.???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы...

Redirect 301 /Ремонт%20квартир/ http://my.su/remont_kvartir/

не будет работать

Даже если вы преобразуете urlencode или сохраните в utf-8

 

Могу порекомендовать

это сделать вставку в index.php и средствами php редиректить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы...

Redirect 301 /Ремонт%20квартир/ http://my.su/remont_kvartir/

не будет работать

Даже если вы преобразуете urlencode или сохраните в utf-8

 

Могу порекомендовать

это сделать вставку в index.php и средствами php редиректить

А не подскажете, если не сложно, конечно,  пошагово, как переадресовать одну страницу на другую просто я не силен в php. Жаль что в .htaccess нельзя сделать(((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

header("HTTP/1.1 301 Moved Permanently");

header("Location: http://my.su/remont_kvartir/"); exit();

 

так в начале страницы прописываю в исходном коде - не получается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте

htaccess - кодировка utf-8 (без BOM)

СОДЕРЖАНИЕ:

Redirect 301 /Ремонт%20квартир/ http://my.su/remont_kvartir/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

header("HTTP/1.1 301 Moved Permanently");

header("Location: http://my.su/remont_kvartir/"); exit();

 

так в начале страницы прописываю в исходном коде - не получается

Так нельзя делать

if (isset($_GET['_route_'])) $route =urldecode($_GET['_route_']);
$redirect = array ('old_address' =>'new_addres');
if(isset($redirect[$route])){ header('Location: '.$redirect[$route],true); exit;}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

if (isset($_GET['_route_'])) $route =urldecode($_GET['_route_']);
$redirect = array ('old_address' =>'new_addres');
if(isset($redirect[$route])){ header('Location: '.$redirect[$route],true); exit;}

 

А так можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

конечно

в самое начало index.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, не помогло ни так, ни так, что ж за бяда- то такая с этим редиректом, чтоб его!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

файл index.php сохранить в utf-8 без bom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не помогло вот содержание файла index.php

if (isset($_GET['_route_'])) $route =urldecode($_GET['_route_']);

$redirect = array ('http://annushka.su/Уборка%20квартир/' =>'http://annushka.su/uborka_kvartir/');

if(isset($redirect[$route])){ header('Location: '.$redirect[$route],true); exit;}

<?php

// Version

define('VERSION', '1.5.4.1');

// Configuration

require_once('config.php');

// Install

if (!defined('DIR_APPLICATION')) {

header('Location: install/index.php');

exit;

}

// VirtualQMOD

require_once('./vqmod/vqmod.php');

$vqmod = new VQMod();

// VQMODDED Startup

require_once($vqmod->modCheck(DIR_SYSTEM . 'startup.php'));

// Application Classes

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/customer.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/affiliate.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/currency.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/tax.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/weight.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/length.php'));

require_once($vqmod->modCheck(DIR_SYSTEM . 'library/cart.php'));

// Registry

$registry = new Registry();

// Loader

$loader = new Loader($registry);

$registry->set('load', $loader);

// Config

$config = new Config();

$registry->set('config', $config);

// Database

$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

$registry->set('db', $db);

// Store

if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {

$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");

} else {

$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");

}

if ($store_query->num_rows) {

$config->set('config_store_id', $store_query->row['store_id']);

} else {

$config->set('config_store_id', 0);

}

// Settings

$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");

foreach ($query->rows as $setting) {

if (!$setting['serialized']) {

$config->set($setting['key'], $setting['value']);

} else {

$config->set($setting['key'], unserialize($setting['value']));

}

}

if (!$store_query->num_rows) {

$config->set('config_url', HTTP_SERVER);

$config->set('config_ssl', HTTPS_SERVER);

}

// Url

$url = new Url($config->get('config_url'), $config->get('config_use_ssl') ? $config->get('config_ssl') : $config->get('config_url'));

$registry->set('url', $url);

// Log

$log = new Log($config->get('config_error_filename'));

$registry->set('log', $log);

function error_handler($errno, $errstr, $errfile, $errline) {

global $log, $config;

switch ($errno) {

case E_NOTICE:

case E_USER_NOTICE:

$error = 'Notice';

break;

case E_WARNING:

case E_USER_WARNING:

$error = 'Warning';

break;

case E_ERROR:

case E_USER_ERROR:

$error = 'Fatal Error';

break;

default:

$error = 'Unknown';

break;

}

if ($config->get('config_error_display')) {

echo '<b>' . $error . '</b>: ' . $errstr . ' in <b>' . $errfile . '</b> on line <b>' . $errline . '</b>';

}

if ($config->get('config_error_log')) {

$log->write('PHP ' . $error . ': ' . $errstr . ' in ' . $errfile . ' on line ' . $errline);

}

return true;

}

// Error Handler

set_error_handler('error_handler');

// Request

$request = new Request();

$registry->set('request', $request);

// Response

$response = new Response();

$response->addHeader('Content-Type: text/html; charset=utf-8');

$response->setCompression($config->get('config_compression'));

$registry->set('response', $response);

// Cache

$cache = new Cache();

$registry->set('cache', $cache);

// Session

$session = new Session();

$registry->set('session', $session);

// Language Detection

$languages = array();

$query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'");

foreach ($query->rows as $result) {

$languages[$result['code']] = $result;

}

$detect = '';

if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && ($request->server['HTTP_ACCEPT_LANGUAGE'])) {

$browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);

foreach ($browser_languages as $browser_language) {

foreach ($languages as $key => $value) {

if ($value['status']) {

$locale = explode(',', $value['locale']);

if (in_array($browser_language, $locale)) {

$detect = $key;

}

}

}

}

}

if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {

$code = $session->data['language'];

} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {

$code = $request->cookie['language'];

} elseif ($detect) {

$code = $detect;

} else {

$code = $config->get('config_language');

}

if (!isset($session->data['language']) || $session->data['language'] != $code) {

$session->data['language'] = $code;

}

if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) {

setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);

}

$config->set('config_language_id', $languages[$code]['language_id']);

$config->set('config_language', $languages[$code]['code']);

// Language

$language = new Language($languages[$code]['directory']);

$language->load($languages[$code]['filename']);

$registry->set('language', $language);

// Document

$registry->set('document', new Document());

// Customer

$registry->set('customer', new Customer($registry));

// Affiliate

$registry->set('affiliate', new Affiliate($registry));

if (isset($request->get['tracking']) && !isset($request->cookie['tracking'])) {

setcookie('tracking', $request->get['tracking'], time() + 3600 * 24 * 1000, '/');

}

// Currency

$registry->set('currency', new Currency($registry));

// Tax

$registry->set('tax', new Tax($registry));

// Weight

$registry->set('weight', new Weight($registry));

// Length

$registry->set('length', new Length($registry));

// Cart

$registry->set('cart', new Cart($registry));

// Encryption

$registry->set('encryption', new Encryption($config->get('config_encryption')));

// Front Controller

$controller = new Front($registry);

// Maintenance Mode

$controller->addPreAction(new Action('common/maintenance'));

// SEO URL's

if (!$seo_type = $config->get('config_seo_url_type')) {

$seo_type = 'seo_url';

}

$controller->addPreAction(new Action('common/' . $seo_type));

// Router

if (isset($request->get['route'])) {

$action = new Action($request->get['route']);

} else {

$action = new Action('common/home');

}

// Dispatch

$controller->dispatch($action, new Action('error/not_found'));

// Output

$response->output();

?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уборка%20квартир

%20 это лишнее - заменить на пробел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. все redirect`ы должны быть ПЕРЕД любыми rewrite-правилами.

2. есть версии apache, которые так или иначе не дружат с кириллицей.

3. кодировка .htaccess должна быть ПРАВИЛЬНОЙ (зависит и от кодировки сервера, и от кодировки сайта; в большинстве случаев - сейчас это utf8).

4. кириллический адрес, с которого должна быть переадресация, должен быть записан правильно ( http://otvety.google.ru/otvety/thread?tid=08d3a18f4d2a7cf3 - ответ от apple_rom)

5. если ничего не работает - тут есть пример "хака" на php: http://forum.searchengines.ru/showpost.php?p=11972460&postcount=9

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ничего не помогло,зато выяснил проблему:

Она залючается в пробеле т.к. /ремонтквартир/  - редирект выполняется, а /ремонт%20квартир/ - редирект не выполняется 

пробовал другие кодировки url типа /%D0%A3%D0%B1%D0%BE%D1%80%D0%BA%D0%B0%20%D0%BA%D0%B2%D0%B0%D1%80%D1%82%D0%B8%D1%80/

не прокатывает, странно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответ тех поддержки хостинга

К сожалению, мы тут помочь не сможем - судя по всему, в реврайтах символ пробела указать нельзя. Не говоря уж о том, что кириллические символы в url - это в принципе плохой тон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно

ремонт\ квартир

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибка:

URL-путь имеет неверное значение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не поверите... Это просто, когда делаешь сам, но когда кто-то что делает, и просто говорит что не работает, и не показывает, что сделал, как сделал

Откуда сообщение

URL-путь имеет неверное значение

 

То - да - казалось бы так просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забудьте про пробелы, 

вот что в закладках первое нашел, почитайте про htaccess http://al.ndd.ru/12/apache-conf_access.html

 

Но редирект сделать можно через php, как точно не подскажу, 

Однако вот что мне в голову пришло...

На скольколько я помню, при большом объёме редиректов их можно запиливать в БД, а если у вас были ссылки кирилицей и с пробелами, значит БД их воспринимает нормально и они обрабатываются нормально. Значит можно сделать редирект если ссылаться на БД или же вовсе не используя .htaccess. Только для этого нужно писать скрипт php под ваш сайт который будет рскидывать редиректы по нужным страницам.

 

Например

 <?php
      header("HTTP/1.1 301 Moved Permanently");
      header("Location: новый адрес");
      exit();
      ?>

------------или-------------------

<?

      $ref=$_SERVER['QUERY_STRING'];
      if ($ref!='') $ref='?'.$ref;
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: новый адрес");
      exit();
      ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Все прекрасно работает:

 

if ($_SERVER['REQUEST_URI'] == '/старый адрес') {

header('HTTP/1.1 301 Moved Permanently');

header('Location: /новый адрес');

exit; }

 

Вставляю в /catalog/view/theme/default/template/error/not_found.tpl вставляю в самое начало под тегом <?php

адреса пишем без домена, например site.ru/tovar.html то в записи должно быть /tovar.html

Страница обязательно должна быть недоступной, на крайний случай можно поставить этот код в хэадер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Wacoola
      Всем привет!
      Нужна помощь... 
       
      ...элементарный редирект

      Redirect 301 /OLD/ /NEW/НЕ РАБОТАЕТ!выдает кусок старого адреса в конце:

      /cat_new/?_route_=/cat/(странность ещё и в том, что есть сайт на этом же хостинге на этом же движке, но там всё работает)Суть (задача)
      Были адреса продуктов:

      домен/кат1/продукт001.htmlСтали:
      домен/кат1_new/продукт001.htmlТребуется
      Redirect 301 /кат1/ /кат1_new/Исходные данные.htaccess
      ocStore Версия 1.5.5.1.2
      Тип ЧПУ: SEOPro
      окончания  .html
    • От dimastad
      Проблема:
      На сайте присутствуют незакрытые страницы фильтрации, которые в данный момент являются дублями родительских (основных) страниц категорий/подкатегорий.
      Пример:
      Например, страницы

      https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:5558-6867'>https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:5558-6867 https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793'>https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793являются дублями страницы категории
      https://coolstuff.com.ua/muzykalnoe-oborudovanie/Модуль – ocfilter (http://ocfilter.com)1. Для страниц категорий по маске

      http://coolstuff.com.ua/name-of-the-category/в связи с тем, что на данных страницах категорий отсутствует фильтрация, необходимопоставить 301 редирект со всех страниц по маске

      ?filter_ocfilter=на основную страницу категории во избежание формирования дублей.И заменить все ссылки отдающие 301 ответ сервера в исходном коде страниц сайта.
      Например, со страницы

      https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793'>https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793поставить 301 редирект на страницу
      https://coolstuff.com.ua/muzykalnoe-oborudovanie/После простановки редиректа заменить в исходном коде страниц ссылку
      https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793'>https://coolstuff.com.ua/muzykalnoe-oborudovanie/?filter_ocfilter=p:9484-10793на
      https://coolstuff.com.ua/muzykalnoe-oborudovanie/ 2. Для страниц подкатегорий по маске

      http://coolstuff.com.ua/name-of-the-category/name-of-the-subcategoryдля страниц с параметром
      ?filter_ocfilter=наладить генерацию мета-тега
      <meta name="robots" content="noindex, nofollow"/>Например, на странице
      https://coolstuff.com.ua/muzykalnoe-oborudovanie/akusticheskie-udarnye-ustanovki/?filter_ocfilter=p:46603-56572в коде страницы, в разделе <head></head> прописать мета-тег
      <meta name="robots" content="noindex, nofollow"/>Есть у кого идеи как это все сделать?
    • От moisey7
      Подскажите, пожалуйста, после изменения url страницы и переадресации на новый url уникальность текста остается или необходимо писать новый текст?
    • От cherkas
      помогите настроить Redirect
       
      Redirect 301 /category/* http://magazin.local/*
      Redirect 301 /category/(.*) http://magazin.local/(.*)
       
      не работает
       
      суть:
       
      переношу магазин, в старом магазине урл для категорий формируется как
       
      хттп://мой_магазин/category/ЧПУ_категории.
       
      в опенкарте урл формируется
       
      хттп://мой_магазин/ЧПУ_категории.
       
      т.е. нужен общий шаблон, что бы исключить category/
    • От zcell
      В файле .htaccess прописываю
      Redirect 301 /catalog/power-lift http://renatm.ru/antiaging/powerlift/
      Переадресация срабатывает, но выдает путь http://renatm.ru/antiaging/powerlift/?_route_=catalog/power-lift
      ?_route_=catalog/power-lift - из-за этой части урл появляется 404 ошибка
      Вопроc: как убрать ?_route_=catalog/power-lift ?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.