What version are you running?
* ReviewBoard 1.7.0.1
* djblets 1.7.8
What's the URL of the page containing the problem?
Any link to the config/ or db/ admin page of an extension
eg: http://example.com/reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/config/
What steps will reproduce the problem?
1. Install reviewboard *not* on the root of the web server. eg: /reviews/
2. install an extension (eg: ReviewBot)
3. click on the 'Configure' or 'Database' links from the extension list admin page
What is the expected output? What do you see instead?
I expect to see the 'config/' or 'db'/ page, and instead I get a 404 with the following info:
Using the URLconf defined in djblets.util.rooturl, Django tried these URL patterns, in this order (irrelevant url patterns removed):
^reviews/ ^admin/extensions/ ^$
^reviews/ ^admin/ ^$
<snip/>
^reviews/ ^reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/config/
^reviews/ ^reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/config/
^reviews/ ^reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/db/
<snip/>
The current URL, reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/config/, didn't match any of these.
Note that if I manually enter http://example.com/reviews/reviews/admin/extensions/reviewbotext.extension.ReviewBotExtension/config/ (with the redundant '/reviews/') the page works.
I did some digging and this seems to be happening because djblets.extensions.base.ExtensionManager always prefixes the extension admin_urls with reverse('djblets.extensions.views.extension_list').lstrip('/') which ends up including the redundant '/reviews/' sub-url.