Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как убрать домен из url? (относительные ссылки)


Recommended Posts

Добрый день!

 

Подскажите пожалуйста, готовим сайт на Opencart 1.5 к переезду на полный https:// , задался вопросом, можно ли как-то убрать домен из генерации URL на всём сайте? То есть сделать, так чтобы везде автоматом проставлялись ссылки не вида http://domen.ru/blabla/, а только /blabla/ ?

 

Везде где можно было поправить руками, уже поправил, интересует генерация URL для товаров и категорий.

 

Буду очень признателен за помощь.

Надіслати
Поділитися на інших сайтах


Да, это понятно, когда я включаю SSL в админке, то все ссылки меняются на https://

 

Но поскольку http:// и https:// - это фактические разные адреса для поисковых систем, то я хочу совершить именно "плавный" переход на https:// - то есть добавить https-версию сайта как неосновное зеркало сайта, и подождать с месяц, пока она проиндексируется, после чего установить https-версию как основное зеркало сайта, и убирать http.

 

Поэтому здесь важна именно возможность сделать относительными все генерируемые opencart-ом ссылки.

 

Кто-нибудь возможно сталкивался с этой задачей?

Змінено користувачем yurem
Надіслати
Поділитися на інших сайтах


Насколько вижу, в system/library/url.php нет ни одной ссылки на HTTP_SERVER или $_SERVER['HTTP_HOST'];, а url формируется так:

$url .= 'index.php?route=' . $route;

Возможно конечно я что-то не так понимаю, наведите меня на строку, где можно-таки убрать домен из url в файле url.php, как вы говорите.

Надіслати
Поділитися на інших сайтах


Приведу свой файл /system/library/url.php (версия opencart - 1.5.4.1) :

<?php
class Url {
	private $url;
	private $ssl;
	private $hook = array();
	
	public function __construct($url, $ssl) {
		$this->url = $url;
		$this->ssl = $ssl;
	}
	
	public function link($route, $args = '', $connection = 'NONSSL') {
        
        // SIMPLE START
        $get_route = isset($_GET['route']) ? $_GET['route'] : (isset($_GET['_route_']) ? $_GET['_route_'] : '');
            
        /*if ($route == 'checkout/cart' && $get_route != 'checkout/cart') {
            $connection = 'SSL';
            $route = 'checkout/simplecheckout';
        }*/
        
        if ($route == 'checkout/checkout' && $get_route != 'checkout/checkout') {
            $route = 'checkout/simplecheckout';
        }
        
        if ($route == 'account/register' && $get_route != 'account/register') {
            $route = 'account/simpleregister';
        }   

        if ($route == 'account/edit' && $get_route != 'account/edit') {
            $route = 'account/simpleedit';
        }  

        if ($route == 'account/address/update' && $get_route != 'account/address/update') {
            $route = 'account/simpleaddress/update';
        } 

        if ($route == 'account/address/insert' && $get_route != 'account/address/insert') {
            $route = 'account/simpleaddress/insert';
        }       
        // SIMPLE END
        
		if ($connection ==  'NONSSL') {
			$url = $this->url;	
		} else {
			$url = $this->ssl;	
		}
		
		$url .= 'index.php?route=' . $route;
			
		if ($args) {
			$url .= str_replace('&', '&', '&' . ltrim($args, '&')); 
		}
		
		return $this->rewrite($url);
	}
		
	public function addRewrite($hook) {
		$this->hook[] = $hook;
	}

	public function rewrite($url) {
		foreach ($this->hook as $hook) {
			$url = $hook->rewrite($url);
		}
		
		return $url;		
	}
}
?>

URL формируется с index.php?route=...

 

Технически я понимаю, что есть $this->ssl и $this->url, но согласно моему файлу, они не участвуют в генерации URL-а. При этом есть переменная $connection, задающая тип подключения = 'NONSSL' или 'SSL'.

 

chukcha, все мы люди, и я попрошу вас общаться в нормальном тоне, по-моему я не глупость очевидную спрашиваю и не вопрос, который по 10 раз уже обсуждался на форуме. Надеюсь на понимание. Вполне возможно что вы приводите мне пример из другой версии или сборки opencart.

 

На примере моего файла, знающие подскажите пожалуйста, где можно убрать домен из URL? Если генерация именно в нём происходит.

Змінено користувачем yurem
Надіслати
Поділитися на інших сайтах


:)

Т.е. ві хотите пройти курс программирования?

		if ($connection ==  'NONSSL') {
			$url = $this->url;	
		} else {
			$url = $this->ssl;	
		}
		
		$url .= 'index.php?route=' . $route;
			
		if ($args) {
			$url .= str_replace('&', '&', '&' . ltrim($args, '&')); 
		}

Что такое $this->url;     и из чего оно формируется?


но согласно моему файлу, они не участвуют в генерации URL-а.

Это из чего вы сделали такой вывод?

 


и я попрошу вас общаться в нормальном тоне

Какой тон?

Я вам указал явное место.

Надіслати
Поділитися на інших сайтах

Не надо мудрить и удалять все баги кода opencart - их много. И во многих модулях

Есть "бронебойное" решение

Плавный переход на https согласно требований Яндекс

SEO Fix HTTPS 2.x

Бесплатно

После склейки зеркал Яндексом - в htaccess делаете редирект с http на https

Всё

Надіслати
Поділитися на інших сайтах

Спасибо, вроде как разобрался.

Там далеко не все, если будите каждый баг "искоренять"

Не забываем "ручное" прописывание

А SEO Fix HTTPS 2.x  везде где видит http://сайт заменяет на https://сайт в независимости руками где то прописали или модуль какой сплуговал.

Надіслати
Поділитися на інших сайтах

Спасибо за решение!

markimax, скажите, а на 1.5 есть такой модуль? Не нашёл его в дополнениях этого форума.

Нет нету

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.