Skip to content

Set server request uri to root in CliTaskCommand.php.#4

Open
likemusic wants to merge 1 commit intobeyondit:masterfrom
likemusic:set-request-uri
Open

Set server request uri to root in CliTaskCommand.php.#4
likemusic wants to merge 1 commit intobeyondit:masterfrom
likemusic:set-request-uri

Conversation

@likemusic
Copy link

To prevent redirect when running task on store with VQMod and SeoPro used in.

When OpenCart uses VQMod with SeoPro, there is impossible to run controller-based task because redirect happens while require_once $this->getOCDirectory() . DIRECTORY_SEPARATOR . "index.php"; evaluated (in OCOK/CliTaskCommand.php).

This happens because vqmod/vqcache/vq2-system_startup.php:64:

if (!isset($_SERVER['REQUEST_URI'])) {
	$_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'], 1);

	if (isset($_SERVER['QUERY_STRING'])) {
		$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
	}
}

After evaluating code above $_SERVER['REQUEST_URI'] is cok.phar. Then in catalog/controller/common/seo_pro.php in validate() method redirect happens because $url ends with /cok.phar while $seo ends with only /:297:

		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);
			$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));
			$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));
		} else {
			$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);
			$url = str_replace('&', '&', $config_url . ltrim($this->request->server['REQUEST_URI'], '/'));
			$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'NONSSL'));
		}

		if (rawurldecode($url) != rawurldecode($seo)) {
			header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

			$this->response->redirect($seo);
		}

To prevent redirect when `VQMod` with `SeoPro` used in open cart.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant