Перейти к содержанию
Форум поддержки пользователей VamShop

Редирект частично работает, частично нет


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

День добрый.

Прошу помощи.

При переносе магазина на VamShop есть необходимость прописать редиректы для товаров и инф.страниц.

Прописала в .htaccess строку:

Redirect 301 /index.php?productID=1019 http://сайт.ru/новый-адрес-товара.html

 

Не работает. При открытии страницы она имеет адрес  /index.php?productID=1019, и по нему открывается содержимое главной страницы.

 

Но! Если прописать редирект вида:

Redirect 301 /новый-адрес-одного-товара.html http://сайт.ru/новый-адрес-другого-товара.html,

то такой редирект работает.

 

Работает даже если, к примеру, новости заредиректить на новую страницу товара:

Redirect 301 /news.php http://сайт.ru/новый-адрес-товара.html/

Работает.

 

А почему тогда не работает редирект со страниц вида /index.php?productID=1019  ??

Подскажите, пожалуйста.

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

Здравствуйте!

 

А Вы в гугле смотрели как правильно прописывать редирект, может ошибка в запись правила в .htaccess ?!

Например нужно полный URL адрес указывать, а на просто /index.php ....

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

Смотрела. Источник перенаправления указывается относительным адресом, а конечный адрес - полным.

Даже если поэкспериментировать и прописать полный адрес вместо относительного - всё равно не работает.

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

Ответ хостера:

"Здравствуйте,

Этот вопрос не имеет отношения к функционированию скриптов, переадресация производится сервером. Проверьте правильность данного правила, удостоверьтесь, что оно не конфликтует с каким-либо соседним правилом в этом же файле."
 
Файл .htaccess стандарный от VamShop, дополнительных настроек я там не прописывала, помимо 301 редиректа, который пытаюсь настроить. 301 редирект прописываю согласно всем правилам. Тогда отчего же он работает весьма выборочно?
Содержимое файла .htaccess:
----------------------------------------------
AddDefaultCharset utf-8
 
RewriteEngine On
RewriteBase /
 
RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]
RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]
 
RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\ [L]
RewriteRule ^shopping_cart\.php\/products_id\/([0-9]*)\/info\/p([0-9]*)_.*\.html shopping_cart\.php\?products_id=$1 [L]
 
RewriteRule ^(product_info|index|shop_content|news|faq|articles|article_info).php(.*)$ redirector.php [L]
 
RewriteRule ^.*\.gif|\.jpg|\.jpeg|\.png|\.css|\.php|\.js$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*).html(.*)$ manager.php [L]
 
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc                0
php_value register_globals                0
php_value session.auto_start              0
php_value mbstring.http_input             pass
php_value mbstring.http_output            pass
php_value mbstring.encoding_translation   0
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
</IfModule>  

-------------------------------

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

Попробуйте вообще всё содержимое удалить в .htaccess и оставить только строки с Вашим редиректом.

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

Сделала так, как Вы посоветовали. Удалила все строки. Оставила только правило. Не работает :(

Странно. 

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

плохо смотрите

 

 

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.сайт\.ru
RewriteRule ^(.*)$ http://сайт.ru/$1 [R=permanent,L]


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://сайт.ru/ [R=301,L] 


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://сайт.ru/ [R=301,L]
 

пример 301 редиректа. работает всегда

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

Видимо моих знаний в этом вопросе не хватает.

Если я правильно поняла, то указанные Вами правила определяют 1) перенаправление сайта с www на без www, 2) все страницы php на новый сайт, 3) все страницы вида html на новый сайт. Так?

В Вашем примере есть правило, которое перенаправляет с одной конкретной страницы на вторую конкретную страницу?

Как мне, согласно Вашему примеру, прописать перенаправление страницы вида /index.php?productID=1019 на страницу вида http://сайт.ru/krahmal.html  ?

Заранее спасибо за ответ.

 

P.S. Домен у меня не менялся. Сайт остался прежним. Поменялись только адреса страниц с товарами. 

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

Видимо моих знаний в этом вопросе не хватает.

Если я правильно поняла, то указанные Вами правила определяют 1) перенаправление сайта с www на без www, 2) все страницы php на новый сайт, 3) все страницы вида html на новый сайт. Так?

В Вашем примере есть правило, которое перенаправляет с одной конкретной страницы на вторую конкретную страницу?

Как мне, согласно Вашему примеру, прописать перенаправление страницы вида /index.php?productID=1019 на страницу вида http://сайт.ru/krahmal.html  ?

Заранее спасибо за ответ.

 

P.S. Домен у меня не менялся. Сайт остался прежним. Поменялись только адреса страниц с товарами. 

 

 

RewriteCond %{HTTP_HOST} ^www\.сайт\.ru
RewriteRule ^(.*)$ http://сайт.ru/$1 [R=permanent,L]

перенаправляет с www на без www

 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://сайт.ru/ [R=301,L] 

убирает дубль главной т.е index.php

 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://сайт.ru/ [R=301,L]

убирает дубль главной т.е index.html

 

 

 

 

И ответ в студию:

Redirect 301 /index.php?productID=1019 http://site.ru/krahmal.html
Ссылка на сообщение
Поделиться на другие сайты

Уважаемый KoVaLsKy, 

Ваш ответ поразил меня в самое сердце! Пожалуйста, прочитайте мой первый пост, и Вы увидите, что Ваш "ответ в студию" был тем самым решением, которое у меня НЕ РАБОТАЕТ. И именно поэтому я и открыла эту тему.

 

 

День добрый.

Прошу помощи.

При переносе магазина на VamShop есть необходимость прописать редиректы для товаров и инф.страниц.

Прописала в .htaccess строку:

Redirect 301 /index.php?productID=1019 http://сайт.ru/новый-адрес-товара.html

 

Не работает. При открытии страницы она имеет адрес  /index.php?productID=1019, и по нему открывается содержимое главной страницы.

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

))))))) понатарез блин ))))

 

Значит у Вас сервак мягко говоря "фиговый"

 

Есть еще вариант через php редирект сделать в таком случае

 

P.S извините за "пораженное" сердечко ))))
 

 

http://vk.com/doc15858197_195577729?hash=fc9f5963824f539268

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

Подскажите пожадуйста...

Мне нужно склеить зеркала с без www на www для этого прописав редирек.

 

само выражение...

 

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт\.ru$ [NC]
RewriteRule ^(.*)$ http://www.сайт.ru/$1 [R=301,L] 

Куда в .htaccess нужно вставлять данное выражение что б все работало.

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

В любое не получается.

если ставить так:

 

AddDefaultCharset utf-8



RewriteEngine On

RewriteBase /



Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт\.ru$ [NC]
RewriteRule ^(.*)$ http://www.сайт.ru/$1 [R=301,L] 



RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]

RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]
 

то не пускает в админку.

 

если вставить так:

AddDefaultCharset utf-8
 
RewriteEngine On
RewriteBase /
 
RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]
RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]
 
RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\ [L]
RewriteRule ^shopping_cart\.php\/products_id\/([0-9]*)\/info\/p([0-9]*)_.*\.html shopping_cart\.php\?products_id=$1 [L]
 
RewriteRule ^(product_info|index|shop_content|news|faq|articles|article_info).php(.*)$ redirector.php [L]
 
RewriteRule ^.*\.gif|\.jpg|\.jpeg|\.png|\.css|\.php|\.js$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*).html(.*)$ manager.php [L]

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт\.ru$ [NC]
RewriteRule ^(.*)$ http://www.сайт.ru/$1 [R=301,L]

то не отображает картинки которые прогружаю после вставки кода.

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

Может какая ошибка в коде, я не особо спец. по правилам .htaccess, посмотрите примеры в гугле.

 

Ну и два раза RewriteEngine On наверное нет смысла добавлять строку, достаточно одного раза.

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

Добрый день. подскажите 

Вот редирект 301 

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

скажите строка 

RewriteCond %{REQUEST_URI} !^/robots.*

Для чего везде пишут без нее, а я так понимаю это для поисковиков (для яши?) вобщем что это? нужно или нет?

Спасибо

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

Я даже не особо в курсе .htaccess правил.

Попробуйте через гугл поискать статьи.

 

Если редирект работает, то наверное эта строка не принципиальна.

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

Да тут засада в том что в гугле это и нашел а пояснений увы.

Но да ладно. Возник косяк вот в чем, если я изначально захожу и выдается WWW (как и запрограмировал) то переходя на любую другую страницу то в адресной строке теряется WWW!!! Поковыряю конечно но может кто подскажет в чем косяк

Вот код рабочего файла(вроде другие функции работают(те и вход есть и все остальное работает, кроме WWW на остальных страницах)

  AddDefaultCharset utf-8


RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://www.----bike.pro/ [R=301,L]

RewriteRule ^index\.html$ http://www.----ike.pro/ [R=301,L]

RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]
RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]

RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\ [L]
RewriteRule ^shopping_cart\.php\/products_id\/([0-9]*)\/info\/p([0-9]*)_.*\.html shopping_cart\.php\?products_id=$1 [L]

RewriteRule ^(product_info|index|shop_content|news|articles|article_info).php(.*)$ redirector.php [L]

RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.js$ - [L]
RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.js$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*).html(.*)$ manager.php [L]

RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.php|\.js$ - [L]

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc                0
php_value register_globals                0
php_value session.auto_start              0
php_value mbstring.http_input             pass
php_value mbstring.http_output            pass
php_value mbstring.encoding_translation   0
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
</IfModule>   

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^----ike\.pro$ [NC]
RewriteRule ^(.*)$ http://www.----ike.pro/$1 [R=301,L]



Где ошибка?

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

А зачем Вас www в адресе?!

Лично мне кажется, что без www лучше и короче.

 

Если так надо, пропишите в /includes/configure.php и /admin/includes/confogure.php

 

В названии домена добавьте www.

 

У Вас наверное без www. домен прописан, что правильно, на мой вкус.

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

СЕОшник мозг выел сделай ридерек что бы WWW был везде! и Сделай что бы index php index html в домен.ком перекидывался. 

Ща в конфигурах попробую а из хт аксес выкину этот код

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

Да это чушь.

 

Нужно что б просто было единообразие адресов.

 

т.е. или все адреса с www или все без www.

 

Главное что б не было и с www и без www.

 

Как раз в конфиг файле название домена для этого и прописывается, что б все адреса внутри магазина были единообразны.

 

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

 

P.S. Ну и по-меньше случайте так называемых сеошников, они не являются последней и непоколебимой инстанцией, по мне так вообще среди них практически одни проходимцы. Типа купил ссылок в сапе и всё отлично. Очень аккуратно с ними работайте, а то может стать только хуже.

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

Да ладно, я его давно знаю. 

пока все  хорошо делал.

А каких дублей, например?

 

теперь вопрос правильно РНР поправил?

// Define the webserver and path parameters
// * DIR_FS_* = Filesystem directories (local/physical)
// * DIR_WS_* = Webserver directories (virtual/URL)
  define('HTTP_SERVER', 'http://www.----e.pro'); // eg, http://localhost - should not be empty for productive servers
  define('HTTPS_SERVER', 'http://www.----e.pro'); // eg, https://localhost - should not be empty for productive servers
  define('ENABLE_SSL', false); // secure webserver for checkout procedure?
  define('DIR_WS_CATALOG', '/'); // absolute path required
  define('DIR_FS_DOCUMENT_ROOT', '/var/www/---e/data/www/----e.pro/');
  define('DIR_FS_CATALOG', '/var/www/----e/data/www/----e.pro/');
  define('DIR_WS_IMAGES', 'images/');

В хтаксесе уже прописывать ненужно?

 

Потому как если входишь без www то главная отображается без оных, 

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

Да ладно, я его давно знаю. 

пока все  хорошо делал.

А каких дублей, например?

 

теперь вопрос правильно РНР поправил?

// Define the webserver and path parameters
// * DIR_FS_* = Filesystem directories (local/physical)
// * DIR_WS_* = Webserver directories (virtual/URL)
  define('HTTP_SERVER', 'http://www.----e.pro'); // eg, http://localhost - should not be empty for productive servers
  define('HTTPS_SERVER', 'http://www.----e.pro'); // eg, https://localhost - should not be empty for productive servers
  define('ENABLE_SSL', false); // secure webserver for checkout procedure?
  define('DIR_WS_CATALOG', '/'); // absolute path required
  define('DIR_FS_DOCUMENT_ROOT', '/var/www/---e/data/www/----e.pro/');
  define('DIR_FS_CATALOG', '/var/www/----e/data/www/----e.pro/');
  define('DIR_WS_IMAGES', 'images/');

В хтаксесе уже прописывать ненужно?

 

Потому как если входишь без www то главная отображается без оных, 

 

проблема в том, что если вас захотят понизить конкуренты, они накупят ссылок на Ваш сайт с www префиксом и с дублями главной.

в итоге, упадет главная и будут дубли страниц.

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

Merakules

 

Да полно всяких страниц, посмотрите свой магазин, какие страницы проиндексированы, например в яндекс-вебмастере и google webmaster.

 

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

 

Но надеюсь, что разберёмся в будущих версиях.

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

Ситуация такая, изначально .htaccess  содержал только:

 

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.мойсайт\.ru$ [NC]
RewriteRule ^(.*)$ http://мойсайт.ru/$1 [R=301,L]
</IfModule>
 
Все прекрасно работало, но после добавления перед данным кодом, другого кода для работы ручного сео урл кое-что перестало работать, а именно
 
 
Код выглядит вот так:
 
AddDefaultCharset utf-8
 
RewriteEngine On
RewriteBase /
 
RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]
RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]
 
RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\ [L]
RewriteRule ^shopping_cart\.php\/products_id\/([0-9]*)\/info\/p([0-9]*)_.*\.html shopping_cart\.php\?products_id=$1 [L]
 
RewriteRule ^(product_info|index|shop_content|news|articles|article_info).php(.*)$ redirector.php [L]
 
RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.js$ - [L]
RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.js$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*).html(.*)$ manager.php [L]
 
RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.php|\.js$ - [L]
 
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc                0
php_value register_globals                0
php_value session.auto_start              0
php_value mbstring.http_input             pass
php_value mbstring.http_output            pass
php_value mbstring.encoding_translation   0
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
</IfModule>    
 
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.мойсайт\.ru$ [NC]
RewriteRule ^(.*)$ http://мойсайт.ru/$1 [R=301,L]
</IfModule>
 
 
Дело в том, что нужный мне редирект, это несуществующая удаленная категория, но на нее много внешних ссылок, мне нужно чтобы стояла перманентная переадресация на другую категорию. Может быть кто в курсе, что нужно исправить, чтобы снова заработал данный редирект?
 
 
 
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...