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

Появление обращений ?page=-111


Recommended Posts

ой!!!

 

page=099

да там в принципе любой символ подставь и будет страница доступна. Моем случае экстренное решение понадобилось  именно для "-". Так как яндекс прошуршал несколько тысяч страниц с минусом( не знаю где он их взял). И в панели вебмастера я увидел загружено: 5000+ страниц :)

 

 

!preg_match("/[^0-9]/s", $page) || ((int)$page < 1)

Спасибо за помощь, попробую изменить

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


Регулярку для страждущих подкину

 

^[1-9]{1}[0-9]*$

 

Комментарий

 

{1} - это скорей для понимания, почему так,

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

  • 1 year later...

Технически закрыть не получилось, страницы все также доступны.

Но я закрыл их в роботс и они тут же повылетали и более Яндекс по ним не лазил.

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


  • 11 months later...

Проблема в файле пагинации, конкретно в /system/library/pagination.php

Нужно сделать резервную копию файла pagination.php, а в новом поменять код на:

<?php
class Pagination {
	public $total = 0;
	public $page = 1;
	public $limit = 20;
	public $num_links = 8;
	public $url = '';
	public $text_first = '|&lt;';
	public $text_last = '&gt;|';
	public $text_next = '&gt;';
	public $text_prev = '&lt;';
	public function render() {
		$total = $this->total;
		if ($this->page < 1) {
			$page = 1;
		} else {
			$page = $this->page;
		}
		if (!(int)$this->limit) {
			$limit = 10;
		} else {
			$limit = $this->limit;
		}
		$num_links = $this->num_links;
		$num_pages = ceil($total / $limit);
		$this->url = str_replace('%7Bpage%7D', '{page}', $this->url);
		$output = '<ul class="pagination">';
		if ($page > 1) {
			$output .= '<li><a href="' . str_replace(array('&amp;page={page}', '?page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_first . '</a></li>';
			
			if ($page - 1 === 1) {
				$output .= '<li><a href="' . str_replace(array('&amp;page={page}', '?page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_prev . '</a></li>';
			} else {
				$output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>';
			}
		}
		if ($num_pages > 1) {
			if ($num_pages <= $num_links) {
				$start = 1;
				$end = $num_pages;
			} else {
				$start = $page - floor($num_links / 2);
				$end = $page + floor($num_links / 2);
				if ($start < 1) {
					$end += abs($start) + 1;
					$start = 1;
				}
				if ($end > $num_pages) {
					$start -= ($end - $num_pages);
					$end = $num_pages;
				}
			}
			for ($i = $start; $i <= $end; $i++) {
				if ($page == $i) {
					$output .= '<li class="active"><span>' . $i . '</span></li>';
				} else {
					if ($i === 1) {
						$output .= '<li><a href="' . str_replace(array('&amp;page={page}', '?page={page}', '&page={page}'), '', $this->url) . '">' . $i . '</a></li>';
					} else {
						$output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a></li>';
					}
				}
			}
		}
		if ($page < $num_pages) {
			$output .= '<li><a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a></li>';
			$output .= '<li><a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a></li>';
		}
		$output .= '</ul>';
		if ($num_pages > 1) {
			return $output;
		} else {
			return '';
		}
	}
}

 

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


10 часов назад, Derlescom сказал:

Проблема в файле пагинации, конкретно в /system/library/pagination.php

Нужно сделать резервную копию файла pagination.php, а в новом поменять код на:

А если товаров 1000? И по 10 штук на странице, 100 штук <li> покажем? И что делать со страницами которые уже попали?

Имхо - редактировать контроллер категории (и всего остального, где пагинация). Проверять на максимальный / минимальный, отдавать правильные статусы. Доработка по факту не сложная.

П.С. И не вижу минусов поставить noindex, follow на страницы с ?page

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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