You will have to change the Sdl.Web.Tridion project source code which will mean you will be breaking out of the DXA releases.
I simply removed the SDLTridion2013sp1 reference from the Sdl.Web.Tridion project, added a reference to DD4T.Providers.Rest through nuget in that same project, then updated the DD4TFactoryCache.cs file to use DD4T.Providers.Rest instead of DD4T.Providers.SDLTridion2013sp1.
You then need to update the Site Project's web.config to reference your DD4T Rest API by adding a new app setting:
<add key="DD4T.ContentProviderEndPoint" value="http://dd4trestapi.domain.com" />
Rebuild and deploy the Site Project and all should be working.
You may need to remove the DD4T.Providers.SDLTridion2013sp1.dll from the bin folder of your DXA website if it isn't cleared out in your deployment process.
UPDATE:
It turns out that the above steps are just the start. The Component Linking is going through the Tridion API so you will need add a new GetLinkFactory method to Sdl.Web.Tridion.Mapping.DD4TFactoryCache
internal static ILinkFactory GetLinkFactory(Localization localization)
{
lock (_linkFactories)
{
ILinkFactory linkFactory;
if (!_linkFactories.TryGetValue(localization.LocalizationId, out linkFactory))
{
IPublicationResolver publicationResolver = new PublicationResolver(localization);
IProvidersCommonServices providersCommonServices = new ProvidersCommonServices(publicationResolver, _logger, _config);
IFactoryCommonServices factoryCommonServices = new FactoryCommonServices(publicationResolver, _logger, _config, CreateCacheAgent());
linkFactory = new LinkFactory(
new TridionLinkProvider(providersCommonServices),
factoryCommonServices);
_linkFactories.Add(localization.LocalizationId, linkFactory);
}
return linkFactory;
}
}
You will then need to update the ResolveComponentLink method in Sdl.Web.Tridion.Linking.LinkResolver to call the DD4T LinkFactory:
private static string ResolveComponentLink(TcmUri tcmUri, Localization localization)
{
ILinkFactory linkFactory = DD4TFactoryCache.GetLinkFactory(localization);
string link = linkFactory.ResolveLink(tcmUri.ToString());
return link != string.Empty ? link : null;
}
You are going to come across this with the Page Links, Binary Links and the Dynamic Lists too.