Я пытаюсь это, когда кто-то открывает эту ссылку: [url] www.example.com/invite/1234randomhashtag [/ url]
Будет перенаправлен на:
www.example.cloud/index.php?cl=register_new_user&FNC = регистр&хэш = 1234randomhashtag
Теперь это легко сделать с помощью PHP заголовок.
Однако я также нашел oxutilsurl учебный класс. Возможно ли вообще сделать это с этим классом? Это помогает?
Oxid не поддерживает вас, изменяя оригинальную механику маршрутизации оксидов таким образом, чтобы они работали на вас. Существует способ настроить статические перенаправления в общих настройках внутри административного административного сервера Oxid (см. Вкладку SEO). Но они не поддерживают подстановочные знаки (/ пригласить / *), как они вам понадобятся.
Теоретически, если вы действительно хотите иметь решение для этого внутри оксидного модуля (чтобы не взломать ядро и не связать его внутри модуля), вы можете расширить одну из нескольких оксидных функций, которые вызываются до того, как оксиды имеют собственный mvc. на основе логики маршрутизации достигается и вручную перенаправить в этой точке. По сути, это можно сделать в каждой основной функции, вызываемой до того, как вы перейдете на страницу 404 (oxseodecoder :: processSeoCall)
Учитывая официальную информацию от Oxid, в которой перечислены не перегружаемые классы, Вы должны иметь возможность расширить oxshopcontrol :: start (или даже oxseodecoder :: processSeoCall) и добавить что-то вроде следующего:
if(preg_match("/\/invite\/.*/", $_SERVER['REQUEST_URI'])){
$randomHash = basename($_SERVER['REQUEST_URI']);
oxRegistry::getUtils()->redirect($this->getConfig()->getShopURL().'index.php?cl=register_new_user&fnc=register&hash='.$randomHash , false, 301);
}
Во всяком случае, я думаю, что самый простой, быстрый и самый производительный подход на этот раз будет установка перенаправления URL-адресов в файле .htaccess внутри корневого каталога вашего магазина.
Следующее должно работать:
RewriteRule ^invite/([A-Za-z0-9-]+)/?$ index.php?cl=register_new_user&fnc=$1 [NC,L]
Вы можете поместить этот код сразу под RewriteBase /
внутри файла .htaccess в корневом каталоге вашего магазина.
Я положил это правило перезаписи вместе с информацией из Эта статья.
OXID не имеет динамической маршрутизации на основе частей URL.
Для каждого действующего URL-адреса SEO в базе данных есть запись URL-адреса SEO.
Вы можете создать URL-адрес SEO, если кто-то использует вашу функцию приглашения, и удалить URL-адрес через пару месяцев.
Или вам нужно немного изменить сгенерированные URL и сделать так, чтобы это выглядело так:
www.example.com/invite#1234randomhashtag с # вместо /
а затем проанализировать ваш хэш $_SERVER["REQUEST_URI"]
и установите свои переменные или перенаправьте на окончательный URL
Но вы все еще можете решить эту проблему за пределами OXID с помощью правил перезаписи .htacess (я думаю) или другого php микро фреймворка, такого как «Slim» или «Lumen», работающего в /invite/
каталог и перенаправление вашего посетителя обратно в магазин