Allow custom Sites to have custom 404 controllers
Summary: Currently, custom Sites must match `.*` or similar to handle 404's, since the fallback is always generic. This locks them out of the "redirect to canonicalize to `path/` code", so they currently have a choice between a custom 404 page or automatic correction of `/`. Instead, allow the 404 controller to be constructed explicitly. Sites can now customize 404 by implementing this method and not matching everything. (Sites can still match everything with a catchall rule if they don't want this behavior for some reason, so this should be strictly more powerful than the old behavior.) See next diff for CORGI. Test Plan: - Visited real 404 (like "/asdfafewfq"), missing-slash-404 (like "/maniphest") and real page (like "/maniphest/") URIs on blog, main, and CORGI sites. - Got 404 behavior, redirects, and real pages, respectively. Reviewers: chad Reviewed By: chad Differential Revision: https://secure.phabricator.com/D16966
This commit is contained in:
@@ -545,6 +545,13 @@ final class AphrontRequest extends Phobject {
|
||||
return id(new PhutilURI($path))->setQueryParams($get);
|
||||
}
|
||||
|
||||
public function getAbsoluteRequestURI() {
|
||||
$uri = $this->getRequestURI();
|
||||
$uri->setDomain($this->getHost());
|
||||
$uri->setProtocol($this->isHTTPS() ? 'https' : 'http');
|
||||
return $uri;
|
||||
}
|
||||
|
||||
public function isDialogFormPost() {
|
||||
return $this->isFormPost() && $this->getStr('__dialog__');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user