Есть URL: /catalog/24/
Необходимо его преобразовать к URL: /random_url/
После преобразования необходимо что бы сохранялась возможность обработки системой запросов на сброс кэша или авторизацию, то есть что бы при добавлении GET и POST запросов обработка шла обратно по /catalog/24/?query_string
Для изменения URL прикрутил костыль:
в корневом htaccess добавил строку преобразования
далее что бы система понимала что от нее хотят в файле /urlrewrite.php добавил массив
и в файле /bitrix/modules/main/include/urlrewrite.php добавил проверку:
и все бы хорошо, но при попытке с этой страницы авторизоваться или очистить кэш система не получает правильного запроса и либо просто перезагружает страницу либо выводит 404, что логично так как страницы /random_url/?query_string он не найдет.
Может есть у кого идеи как можно это заставить работать до конца или может еще где то поставить блок проверки на REQUEST_URI ?
P.S. Конечно нашел в сети информацию о том что короткие URL можно формировать используя модуль "Короткие ссылки" но по какой то непонятной причине он не влияет на конечный результат, возможно он просто не подключен как надо или по какой то причине система не сверяет ссылки с указанными в данном модуле, но именно по этому решил запилить костыль, что бы хоть как то работало... Если есть идеи по чему может не работать указанный модуль буду рад подсказкам где что посмотреть и как проверить работу.
Необходимо его преобразовать к URL: /random_url/
После преобразования необходимо что бы сохранялась возможность обработки системой запросов на сброс кэша или авторизацию, то есть что бы при добавлении GET и POST запросов обработка шла обратно по /catalog/24/?query_string
Для изменения URL прикрутил костыль:
в корневом htaccess добавил строку преобразования
Код |
---|
RewriteRule ^/catalog/24/$ /random_url/ [L, QSA] |
далее что бы система понимала что от нее хотят в файле /urlrewrite.php добавил массив
Код |
---|
$arUrlCondition = array( '/random_url/'=>'24' ); |
и в файле /bitrix/modules/main/include/urlrewrite.php добавил проверку:
Код |
---|
foreach($arUrlCondition as $key => $value){ if($_SERVER["REQUEST_URI"] == $key){ $_SERVER["REQUEST_URI"] = '/catalog/'.$value.'/'; } } |
и все бы хорошо, но при попытке с этой страницы авторизоваться или очистить кэш система не получает правильного запроса и либо просто перезагружает страницу либо выводит 404, что логично так как страницы /random_url/?query_string он не найдет.
Может есть у кого идеи как можно это заставить работать до конца или может еще где то поставить блок проверки на REQUEST_URI ?
P.S. Конечно нашел в сети информацию о том что короткие URL можно формировать используя модуль "Короткие ссылки" но по какой то непонятной причине он не влияет на конечный результат, возможно он просто не подключен как надо или по какой то причине система не сверяет ссылки с указанными в данном модуле, но именно по этому решил запилить костыль, что бы хоть как то работало... Если есть идеи по чему может не работать указанный модуль буду рад подсказкам где что посмотреть и как проверить работу.