Пытался сам разобраться но не получается. Проблема в следующем:
Переношу на CMS Joomla самописный сайт с каталогом товаров уже частично раскрученный в инете, поэтому стоит условие - все внутренние ссылки не менять. Оно-то понятно такое требование, но исходный сайт потому и хреновый что у него все результаты поиска выводятся на главную страницу а не ав отдельный подраздел, в итоге в Joomla не могу корректно управлять выводом модулей на главной странице при выводе результата поиска товара а ихх несколько сотен (править все сылки руками не вариант - ну это детали) итак что нужно:
есть ссылки вида:
сайт/object-128-n1-n2-n3/
сайт/object-234-n1-n2-n3/
и т.п. (где n1? n2? n3 и т.д. это иерархические категории товаров)
это ссылки выводящие результат поиска конкретного товара на главную страницу (в примере id- товара 128, 234 ...)
и есть ссылки выводящие перечень товаров для определенной категории:
сайт/n1
сайт/n1/n2
сайт/n1/n3
все это ранеее выводилось на главную страницу сайта,
в итоге получается каша из категорий и товаров.
Ситуациюю разрулил создав отдельный пункт меню для категорий и отдельный для вывода результата по поиску товара. Адрес пункта меню:
сайт/object/
теперь стоит задача НЕ МЕНЯЯ вид URL (уже проиндексированный в инете)
делать Rewrite на пункт меню сайт/object/
фактически Rewrite без редиректа
В синтаксисе htaccess пока не силен (изучаю его пока)
пробовал в .htaccess добавить строку (см.ниже)
Мой .htaccess
<IfModule autoindex>
IndexIgnore *
</IfModule>
Options +FollowSymlinks
Options -Indexes
RewriteEngine On
#------------ добавил эту строку ----------
RewriteRule ^object-(.*)$ /object\/(.*)$ [R=301,L]
#-------------------------------------------
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
RewriteRule .* index.php [L]
в итоге ссылку http://сайт/object-128-n1-n2-n3/
меняет на строку: http://сайт/object/(.*)$
а должен был перейти на страницу http://сайт/object/128-n1-n2-n3/ а в адресной строке оставить:
http://сайт/object-128-n1-n2-n3/
то-есть вроде как исходную ссылку распознает как надо, но меняет на че поало (я про символы (.*)$), а должен заменить и перейти в пункт меню и там уже контроллер компонента привязанного к пункту меню сам разберется что делать.
Подскажите где ошибка и правильно-ли я выбрал место для вставки строки в .htaccess
А может существует другой способ сохранить проиндексированные URL но привязать его к новой структуре меню сайта?