Итак, я пытаюсь сделать прямое перенаправление:

Store.php?StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0

Перенаправлен на:

Mynewproductname.html

Я не ищу универсальное правило перезаписи, каждое из которых имеет соответствующую часть счетчика .html, так что своего рода «жестко закодировано»

Это для 301 и Google Rankings

Я не могу понять это. Все ресурсы, которые я нашел, дают мне общие правила о том, как преобразовать все php-ссылки за один раз в html-аналог с тем же именем. Я не собираюсь этого делать.

Я пробовал много вещей, ничего не работает. Некоторые из моих попыток:

RewriteRule ^store.php?StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0 $ mynewproductname.html [R=301,L]

RewriteCond %{QUERY_STRING} =store.php?StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0 RewriteRule mynewproductname.html [R=301,L]

RewriteCond %{QUERY_STRING} ^StoreLevel=3&PrevStoreLevel=1&productid=6067&Level1=155&p=5&term=&BrowseBy=0$ Правило перезаписи ^store.php$ http://mysite.com/mynewproductname.html? [Р=301,Л]

Некоторые из них вызывают ошибку сервера 500, некоторые просто не работают. Помощь приветствуется.

РЕДАКТИРОВАТЬ - mod_rewrite включен и работает нормально, удалось перенаправить:

RewriteRule ^foo$ http://mysite.com/testing.html [R=301,L]

С успехом

0
Jason 9 Апр 2011 в 20:31

1 ответ

Вместо использования .htaccess вы можете попробовать перенаправить из своего файла .php. Иметь таблицу поиска productid => веб-страницы, которая сканируется при первой загрузке .php; если вы получили совпадение, верните 301. Если вы не совпадаете, продолжите обычную обработку .php (или 404, если это необходимо)

0
Kevin Lacquement 9 Апр 2011 в 20:35
Спасибо за ответ. Мы должны следовать совету Google: google.com/support/webmasters. /bin/answer.py?answer=93633 Чтобы мы могли поддерживать текущий рейтинг, важно делать это через htaccess.
 – 
Jason
9 Апр 2011 в 20:39
Совет Google — использовать 301; это не нужно делать через .htaccess. Что касается клиента/браузера/паука, нет никакой разницы в том, как это делается. Если перенаправление отличается в зависимости от productid, гораздо эффективнее запускать через PHP, чем пытаться взломать работающий .htaccess.
 – 
Kevin Lacquement
9 Апр 2011 в 23:34
Спасибо за ответы. Итак, как бы мы это сделали? У нас около 1900 переписываний (да, я знаю!). Мы потратили время, чтобы найти совпадение один на один. Так что, если бы мы делали это через php, один файл php для каждой ссылки (1800)? Например: mysite.com/newurlhere"); exit(); ?>
 – 
Jason
10 Апр 2011 в 18:32
Я бы использовал базу данных с таблицей redirect. Столбцы будут productid и webpage. Выберите webpage из таблицы на основе productid; если вы получите результат, сделайте свой редирект. Если вы не получили результат, отправьте сообщение об ошибке.
 – 
Kevin Lacquement
10 Апр 2011 в 20:49