Как уже написал
xzdshr так делать нельзя, но давайте разберёмся где в d7 это расположено.
Для начала выясним как в d7 вообще можно получить URI:
use Bitrix\Main\Application;
use Bitrix\Main\Web\Uri;
$request = Application::getInstance()->getContext()->getRequest();
$requestUri= $request->getRequestUri();
Загляним в реализацию этого метода, быть может там рядом есть setRequestUri ?
// HttpRequest::getRequestUri()
// /bitrix/modules/main/lib/httprequest.php:226
public function getRequestUri()
{
return $this->server->getRequestUri();
}
Ага, HttpRequest отнаследован от Request'a
class HttpRequest extends Request
А тот, являясь абстрактным классом, в свою очередь расширяет ParameterDictionary
abstract class Request extends Type\ParameterDictionary
И далее спускаемся к реализации класса
Dictionary
, где нас будет интересовать метод offsetSet:
/**
* Offset to set
*/
public function offsetSet($offset, $value)
{
if($offset === null)
{
$this->values[] = $value;
}
else
{
$this->values[$offset] = $value;
}
}
Коим мы и попытаемся воспользоваться:
<?
use Bitrix\Main\Application;
use Bitrix\Main\Web\Uri;
$request = Application::getInstance()->getContext()->getRequest();
$request->offsetSet("REQUEST_URI", 'abrakadabra.php');
И получим:
[Bitrix\Main\NotSupportedException]
Can not set readonly value (150)
/home/bitrix/www/bitrix/modules/main/lib/type/parameterdictionary.php:53
#0: Bitrix\Main\Type\ParameterDictionary->offsetSet(string, string)
Потому что в файле parameterdictionary.php в строке 51 есть замечательный метод:
/**
* Offset to set
*/
public function offsetSet($offset, $value)
{
throw new NotSupportedException("Can not set readonly value");
}
Мораль, если захотите эту несправедливость исправить, то лезть придётся достаточно глубоко.