Переезд на новый движек с сохранением ссылок через htaccess

gunman

Новичок
Помогите пожалуйста написать правило для видоизменения ссылок на сайте. Я переношу сайт на новую CMS SHOP SCRIPT 5 и требуется частичное сохранение ссылок. К примеру. Ссылка на старом сайте выглядит так: site1.ru/index.php?categoryID=33 на новом же, эта страница открывается так site2.ru/index.php/category/detskoe-postelnoe-bele/ , нужно чтобы в строке браузера была старая ссылка site2.ru/index.php?categoryID=33 и сайт корректно отображал страницу. Возможно ли настроить такое правило?, критически важных ссылок около 10 штук всего. Спасибо.
 

gunman

Новичок
а что это даст?

вот содержание старого .htaccess
Код:
Options -Indexes

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/css
  <IfModule mod_setenvif.c>
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  </IfModule>
</IfModule>

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType text/html "now"
</IfModule>
 
Последнее редактирование:

vasinsky

Новичок
информацию - либо ЧПУ сделаны по уму - либо правила прописаны вручныю на каждый линк
 

gunman

Новичок
Пробовал, что-то оно не работает

RewriteRule ^index\.php\?categoryID\=33$ /category/detskoe-postelnoe-bele/ [L]

причем главная страница сайта открывается и так site2.ru и так site2.ru/index.php.
но внутренние страницы открываются только с включением в ссыклу index.php
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
gunman, у тебя и без модреврайта есть варианты
делаешь массив соответствия
$page_map = [
33=>'/category/detskoe-postelnoe-bele/',
154=>'/bla-bla/bla'
];

если есть categoryID в get, смотришь его наличие в этом массиве, а дальше, либо редирект на правильный урл, либо выставляешь $_SERVER['PATH_INFO'], или кто там используется для разбора /index.php/some/path, в найденное значение и дальше движок сам разберется.
 

gunman

Новичок
gunman, у тебя и без модреврайта есть варианты
делаешь массив соответствия
$page_map = [
33=>'/category/detskoe-postelnoe-bele/',
154=>'/bla-bla/bla'
];

если есть categoryID в get, смотришь его наличие в этом массиве, а дальше, либо редирект на правильный урл, либо выставляешь $_SERVER['PATH_INFO'], или кто там используется для разбора /index.php/some/path, в найденное значение и дальше движок сам разберется.
К сожалению редирект не прокатит, нужна старая ссылка в строке браузера, идея с разбором ссылки вроде ничего, вот разберу я, но потом же надо будет редирект делать, а это уже новая ссылка в строке браузера....
 

Breeze

goshogun
Команда форума
Партнер клуба
зачем нужна старая ссылка в строке браузера?
редирект необязателен
 

peon

Lok'tar ogar
Попробуй заменить значение $_SERVER['REQUEST_URI'] с помощью варианта Breeze. Это обманет роутер.
(судя по htaccess ss5)
 

Breeze

goshogun
Команда форума
Партнер клуба
пока про поисковики только догадки, не надо самим придумывать причину зачем ТС это нужно.
в топике достаточно решений на все случаи
 

AnrDaemon

Продвинутый новичок
Ловить QUERY_STRING в коде и 301 на новые линки. Без всякого htaccess.
 

AnrDaemon

Продвинутый новичок
Прочитал. Спасибо. Смысла не уловил. Самому приходилось мигрировать на ЧПУ, ничего в поисковиках не отвалилось. Главное, чтобы старый линк вёл на старое место. Что при этом будет в строке адреса - вопрос перпендикулярный.
 
Сверху