Перенаправление SEO URL с оксидными функциями

Я пытаюсь это, когда кто-то открывает эту ссылку: [url] www.example.com/invite/1234randomhashtag [/ url]

Будет перенаправлен на:

www.example.cloud/index.php?cl=register_new_user&FNC = регистр&хэш = 1234randomhashtag

Теперь это легко сделать с помощью PHP заголовок.

Однако я также нашел oxutilsurl учебный класс. Возможно ли вообще сделать это с этим классом? Это помогает?

0

Решение

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 в корневом каталоге вашего магазина.

Я положил это правило перезаписи вместе с информацией из Эта статья.

2

Другие решения

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/ каталог и перенаправление вашего посетителя обратно в магазин

1

По вопросам рекламы [email protected]