I won't have the answer, but to get the ball rolling acceptance test are black box (i.e. the test can't see inside your app to see how it works) - so this is exactly what your user sees. Functional tests are white box (i.e. that test can see into the internal workings of your app) ... so it is kind of what your user sees .... plus a bit of an x-ray into your app.
I don't think you have to have the L4 module available to confirm a URL redirect. But there are multiple way to get / read URLs and if the one you are using requires the L4 module ... well you need to use the L4 module. Or you choose a method that does not use it, like the WebDriver module 'seeInCurrentUrl'.
I needed to access the database to make sure I was redirected to the correct url. I don't think checking that I'm redirected to the correct URL is something that shouldn't be part of an acceptance test
As soon as you need access to the database you've moved into the land of the functional test, but that is inside the 'box' that the user would not see.
And unless I am corrected (please feel free), I reckon checking a redirect would absolutely be part of an acceptance test - it is an important part of overall functionality and even from a black box point of view, the user would see it (because it happens outside of the black box).
I think a more difficult question is the line between integration and functional testing - I've seen examples that only use the unit / integration / acceptance (though some call it functional) test hierarchy and that resonates more with me.
But rest assured, this is confusing to many people. Including me.