Перенаправление 301 работает не так, как я предполагал!

#.htaccess #mod-rewrite #redirect

#.htaccess #мод-перезапись #перенаправление

Вопрос:

Пытаюсь получить простое перенаправление 301 с помощью htaccess, используя этот код: Перенаправление 301 /cat/radiator-cages/product/radiator-support-cage/http://www.mysite.com/product/radiator-cages/custom-radiator-support-cage /

Результаты отправляют меня в http://www.mysite.com/product/radiator-cages/custom-radiator-support-cage/?page=cat/radiator-cages/product/radiator-support-cage

Есть идеи, что я делаю не так? Заранее спасибо за любую помощь.

—Обновить—

 RewriteCond %{HTTP_HOST} ^mysite.com [NC] 
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
RewriteRule ^product/(.*)/(.*)/$ /index.php?page=productamp;parent_url=$1amp;product=$2 [L,NC]

Redirect 301 /cat/radiator-cages/product/radiator-support-cage/ http://www.mysite.com/product/radiator-cages/custom-radiator-support-cage/
  

Комментарии:

1. Есть ли у вас другие правила в файле .htaccess, которые могли бы вызывать эту ошибку? Например, RewriteRule

2. @Ryan Matthews Я обновил исходное сообщение дополнительными правилами, которые у меня есть в моем htaccess

Ответ №1:

Я предлагаю сначала попробовать использовать инструкцию Redirect 301.

Тогда ваш htaccess должен выглядеть примерно так

     Redirect 301 /cat/radiator-cages/product/radiator-support-cage/ http://www.mysite.com/product/radiator-cages/custom-radiator-support-cage/
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^mysite.com [NC] 
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
    RewriteRule ^product/(.*)/(.*)/$ /index.php?page=productamp;parent_url=$1amp;product=$2 [L,NC]
  

Редактировать:

    RewriteEngine on
   RewriteCond %{HTTP_HOST} ^mysite.com [NC] 
   RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
   RewriteRule ^/cat/radiator-cages/product/radiator-support-cage/$ http://www.mysite.com/product/radiator-cages/custom-radiator-support-cage/ [R=301,L]
   RewriteRule ^product/(.*)/(.*)/$ /index.php?page=productamp;parent_url=$1amp;product=$2 [L,NC] 
  

http://www.gerronmulder.com/common-seo-rewrite-rules-for-apache-using-htaccess/

Комментарии:

1. Также, чтобы проверить, работает ли перенаправление, удалите правила перезаписи и посмотрите, работает ли это. Не забудьте также очистить свой кэш (я заметил, что у firefox иногда возникает эта проблема)

2. @Ryan Matthews, На самом деле, я отключил правила перезаписи, и это сработало. Итак, что теперь мне делать?

3. Работает ли это, если у вас есть только первые 3 строки под перенаправлением, но расставлены точки над правилом перезаписи для product?

4. @Ryan Matthews, Да, я прокомментировал эти 3 строки под перенаправлением, и это сработало. Кстати, спасибо за помощь. Я действительно ценю это.

5. Что, если в нем есть все, кроме этой строки RewriteRule ^product/(.*)/(.*)/$ / index.php?page=productamp;parent_url=$ 1amp;product = $2 [L, NC]