/** * Using the configuration value, determines whether we need to redirect to a URL with * a trailing slash or not. * * @return \Concrete\Core\Routing\RedirectResponse */ public function handleURLSlashes(SymfonyRequest $request) { $trailing_slashes = $this['config']['concrete.seo.trailing_slash']; $path = $request->getPathInfo(); // If this isn't the homepage if ($path && $path != '/') { // If the trailing slash doesn't match the config, return a redirect response if ($trailing_slashes && substr($path, -1) != '/' || !$trailing_slashes && substr($path, -1) == '/') { $parsed_url = Url::createFromUrl($request->getUri(), $trailing_slashes ? Url::TRAILING_SLASHES_ENABLED : Url::TRAILING_SLASHES_DISABLED); $response = new RedirectResponse($parsed_url, 301); $response->setRequest($request); return $response; } } }
/** * Using the configuration value, determines whether we need to redirect to a URL with * a trailing slash or not. * * @return \Concrete\Core\Routing\RedirectResponse */ public function handleURLSlashes(SymfonyRequest $request) { $request_path = $request->getRequestUri(); $parsed_url = Url::createFromUrl($request->getUri()); $url_path = ltrim(parse_url($request_path, PHP_URL_PATH), '/'); if ($url_path != (string) $parsed_url->getPath()) { $response = new RedirectResponse($parsed_url, 301); $response->setRequest($request); return $response; } }
/** * Actually sends a redirect */ protected static function createRedirectResponse($url, $code, $headers) { $r = new RedirectResponse($url, $code, $headers); $r->setRequest(Request::getInstance()); return $r; }
/** * Using the configuration value, determines whether we need to redirect to a URL with * a trailing slash or not. * * @return \Concrete\Core\Routing\RedirectResponse */ public function handleURLSlashes(SymfonyRequest $request) { $url = Url::createFromUrl($request->getUri()); if ($request->getPathInfo() != '/') { if (urldecode((string) $url) != urldecode($request->getUri())) { $response = new RedirectResponse((string) $url, 301); $response->setRequest($request); return $response; } } }
/** * Using the configuration value, determines whether we need to redirect to a URL with * a trailing slash or not. * * @return \Concrete\Core\Routing\RedirectResponse */ public function handleURLSlashes(SymfonyRequest $request) { $parsedUrl = (string) Url::createFromUrl($request->getUri()); if ($request->getPathInfo() != '/') { $parsedUrlWithoutQueryString = strstr($parsedUrl, '?', true) ?: $parsedUrl; $requestUrl = $request->getUri(); $requestUrlWithoutQueryString = strstr($requestUrl, '?', true) ?: $requestUrl; if (urldecode($parsedUrlWithoutQueryString) != urldecode($requestUrlWithoutQueryString)) { $response = new RedirectResponse($parsedUrl, 301); $response->setRequest($request); return $response; } } }
public function setRequest(Concrete\Core\Http\Request $r) { return parent::setRequest($r); }