Nginx: Удаление параметров в URL

Где есть пагинация (1, 2, 3, и так далее), например, тема форума, первая страница может открываться по трем адресам:
  1. site/forum/thread/xxx/
  2. site/forum/thread/xxx/page_0/
  3. site/forum/thread/xxx/page_1/

Параметр page_X нужен начиная со второй страницы, но ни как не первой. На то, что одна страница открывается по нескольким адресам, могут ругаться поисковые системы. Я избавился от ненужного параметра для первых страниц, где есть пагинация, на PHP:
		// Удаление "page_0" | "page_1" из URL
		if (preg_match('/page_(0|1)?\//i', $url) && stristr($url, 'admincp/') === false)
		{
			$url = preg_replace('/page_(0|1)?\//', '', $url);
		} // End: Удаление "page_0" | "page_1" из URL

Имея возможность редактировать конфигурацию Nginx, я решил переписать удаление параметров в Nginx. Важно было, чтобы параметр бул удален только при значении 0 и 1, значения 10, 11, 12 и так далее, оставались. Сделал в server:
	# Удаление "page_0" | "page_1" из URL
	location ~* ^(.*)/page_(0|1)/$ {
		return 301 $1/;
	} # End: Удаление "page_0" | "page_1" из URL

После чего перечитал конфигурацию, при помощи команды:
nginx -s reload

PHP код удаляю. Теперь работает Nginx.

Возможно, будет интересно:
- Блог: Nginx: Удаление лишних слэшев в URL
- Блог: Nginx: Добавление слеша в конце URL, если его там нет
Автор:  30.05.2024 06:13:12 pm