Перейти к контенту

Хук склеивания нескольких главных страниц ritsu_redirect


Рекомендуемые сообщения

Что делать?

APTYPKA, какой версии хук? В conf_global.php прописан правильный адрес форума?

 

Monah, не могу воспроизвести ваш URL. Что-то явно не так. Как вариан, могу предложить вариант с группой настроек для данного хука, где можно будет указать все адреса, что подлежат переадресации и её конечный адрес. Думаю, это решит все возникавшие проблемы.

Да, давайте тогда так. Будет отлично.

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 74
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Расскажите, а какой практический эффект дают подобные манипуляции?
Ссылка на комментарий
Поделиться на других сайтах

А что тут непонятного-то? :D

У Тебя есть несколько УРЛов с одним и тем же содержанием, что не есть хорошо для СЕО - для поисковых систем.

Так у Тебя получается всего одна страница, что есть правильно и хорошо.

Ссылка на комментарий
Поделиться на других сайтах

Monah, не могу воспроизвести ваш URL. Что-то явно не так. Как вариан, могу предложить вариант с группой настроек для данного хука, где можно будет указать все адреса, что подлежат переадресации и её конечный адрес. Думаю, это решит все возникавшие проблемы.

А нет возможности без ожидания этой группы настроек просто через файл прописать тот адрес, который не редиректит?

Изменено пользователем Monah
Ссылка на комментарий
Поделиться на других сайтах

Обновился с 1.0.3 на 1.0.4 - появился глюк.

Теперь клик по логотипу (3.0.5) по адресу mysite.com/index.php? выдает 404.

При этом mysite.com/index.php работает отлично - 301 на mysite.com

 

Вопрос снимается, нашел в настройках :D Сорри туплю

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

На другом моем сайте форум (тоже IPB 3.0.5) лежит в категории mysite2.com/qwerty/

В настройках как правильно задать пути?

Перепробовал все - не получается (версию 1.3 там не пробовал раньше) :D

 

решение в завершающем слеше в след строке...

/qwerty/

 

/qwerty/index.php?act=idx

/qwerty/index.php

/qwerty/index.php?

/qwerty/index

 

Заработало с вышеуказанными настройками сразу после отключения функционала 404... Ошибка 100% в нем.

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

В данном хуке мы работаем с request_uri - это вся строка адреса после домена. Например, для url: http://example.com/index.php request_uri будет /index.php. Для http://example.com/test/index.php? - /test/index.php?.

 

Адрес каталога всегда завершается слэшем, например http://example.com/test/. Короче, вы забыли слэш на конце:

/qwerty/

Ссылка на комментарий
Поделиться на других сайтах

Да, со слешем заработало и с 404, спасибо!

Однако - только после того, как 404 был ВЫКЛЮЧЕН, а потом ВКЛЮЧЕН.

Просто добавление слеша проблему не решало, пока не выкл/вкл 404

Ну это так, для баг-репорта :D

 

Спасибо за ХУК!!!

 

З.ы. Еще при логауте (странно, только на сайте, где форум не в корне сайта) частенько возникает линк

/qwerty/index.php?/index

не помешало бы и его в дефолтные настройки...

 

З.з.ы. Ritsuka, а как думаешь, реально портировать твой хук на IPB v2.3.4 ?

Или в той же v.2.3.4 реально хоть какое-либо условие вставить в "общий шаблон форума"?

Там походу даже обычные <if></if> не работают, как в других шаблонах...

А то можно было бы хоть через rel="canonical" разрулить...

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

Там кода-то - всего ничего. Ничего не стоит портировать на двойку.

 

В файл /sources/action_public/boards.php поместите код:

				// settings
			$path = '/2.3.6/';
			$urls = array( '/2.3.6/index.php', '/2.3.6/index.php?' );
			$message = <<<HTML

<h2>Страница не найдена</h2>
<p>Сьешь еще этих мягких французских булочек, да выпей чаю</p>

HTML;
			// code
			$pre_uri = preg_replace("/([?&])s=.*?(?=&|#|\z)/","", $_SERVER['REQUEST_URI']);
			if($pre_uri != $path) 
			{	
					$pass = false;	
					foreach($urls as $uri) if(trim($pre_uri) == trim($uri)) $pass = true;				
					if ( !$pass ) {
							header("HTTP/1.1 404 Not Found");
					$this->ipsclass->print->add_output( $message );	   		
					$this->ipsclass->print->do_output( array( 'TITLE' => 'Страница не найдена', 'JS' => 0, 'NAV' => $this->nav ) );		
							exit();
					} else {
							ob_end_clean();
							header('HTTP/1.1 301 Moved Permanently');
							header('Location: '.$path);
							die();
					}
			}

 

$path, $ulrs и $message, конечно, задайте свои. У меня форум в папке 2.3.6 просто живет :D

 

Ну и в .htaccess не забудьте внести:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Изменено пользователем Ritsuka
Ссылка на комментарий
Поделиться на других сайтах

Спасибо, работает.

Добавил только в массив еще несколько вариантов и все ок.

Кстати - если в массиве недостает какого-нить варианта, то во время захода на эту страницу вылетает ошибка - т.е. 404 как-то не отрабатывается...

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

Если убрать из массива элемент, например, /index.php?act=idx , и зайти на эту страницу, имеем

Fatal error: Call to a member function on a non-object in /var/www/blablabls/mysite2.com/sources/action_public/boards.php  on line 23

Вот в моем файле 23-я строка Твоего кода:

23:						 $this->ipsclass->print->add_output( $message );

 

ОГОГО! Хорошо, что я заметил!!

Эту же ошибку выкидывают страницы форумов:

hттp://mysite2.com/index.php?showforum=4

Fatal error: Call to a member function on a non-object in /var/www/blablabls/mysite2.com/sources/action_public/boards.php on line 23

Зато на страницы входа, тем (/index.php?showtopic=118&pid=572&st=0entry572) и регистрации - без проблем...

 

З.ы. Кстати для 2.3.4 мне пришлось еще вот такой элемент вставить в массив (представляешь, при выходе!)

'/index.php?http://mysite2.com/'

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

Плин, я же вам не сказал, КУДА поместить код) Вы его вставили слишком рано, а у меня сейчас под рукой нет сервера, чтобы посмотреть код ТТ

 

Ночью вернусь на рабочее место - напишу)

Ссылка на комментарий
Поделиться на других сайтах

А там немного вариантов - 5 строк кода и пошли классы-функции...

 

Вставил в первую функцию init - ошибка исчезла, но! адреса форумов теперь выдают красивый 404 текст...

Например, /index.php?showforum=2

 

Прочие адреса (топики, регистрация, юзеры и т.д.) работают нормально.

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

И еще раз спасибо - работает.

 

И может подскажешь (я понимаю, что оффтоп), в 3.0.5 вообще реально на главной получить не список категорий и форумов, а сразу список топиков?

В 2.3.4 - вполне, у меня на главной светился один форум и сразу его топики.

Ну небольшой у меня форум, и достаточно минимального ветвления...

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

И может подскажешь (я понимаю, что оффтоп), в 3.0.5 вообще реально на главной получить не список категорий и форумов, а сразу список топиков?

 

Нужно будет два файла изменить:

1. /admin/applications/forums/modules_public/forums/defaultSection.php

Заменить строку:

$DEFAULT_SECTION = 'boards';

на строку:

$DEFAULT_SECTION = 'forums';

 

2. /admin/applications/forums/modules_public/forums/forums.php

Добавить до строки:

		switch( $this->request[ 'f' ] )

строку:

				if( ! isset($this->request['f']) ) $this->request['f'] = 2;

 

где "2" - номер форума, все темы которого вы хотите вывести на главной странице.

Ссылка на комментарий
Поделиться на других сайтах

Ты лучший, спасибо большое за все!

Вот только после этих двух замен в 3.0.5 Твой хук перестал переадресовывать 2 адреса (хотя они есть в конфиге):

 

/qwerty/index.php

/qwerty/index.php?

 

При этом остальные адреса из конфига без проблем переадресовываются на /qwerty/, а именно:

 

/qwerty/index.php?act=idx

/qwerty/index.php?/index

/qwerty/index

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

Просто хук рассчитан на другую главную страницу...

 

Удалите его, затем замените в оригинальном xml.файле хука строку:

	  <hook_data><![CDATA[a:6:{s:15:"classToOverload";s:27:"public_forums_forums_boards";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]></hook_data>

на строку:

	  <hook_data><![CDATA[a:6:{s:15:"classToOverload";s:27:"public_forums_forums_forums";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]></hook_data>

 

И заново установите. Все заработает.

Ссылка на комментарий
Поделиться на других сайтах

Сделал. Теперь вот эти работают:

 

/qwerty/index.php?

/qwerty/index.php

 

А вот эти - нет... :D Т.е. чётко наоборот.

 

/qwerty/index

/qwerty/index.php?/index

/qwerty/index.php?act=idx

Изменено пользователем A_rchy
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

спасибо за мод! отлично работает!

может немного не в тему - но суть таже

 

у нас форум стоит с откоюченным ЧПУ, заметил вот такую штуку, можно открывать страницы в виде

 

_/forum/index.php?showtopic=5702ffff

хотя нормальный адрес

_/forum/index.php?showtopic=5702

 

уже есть случаи размещения "ошибочных" ссылок на других ресурсах, все это ведет к задвоению контента в индексе поисковиков, и может привести к наложению АГС17 :D

 

возможно это как то проверять и выводить в таких случаях "страницу 404"?

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Вроде была информация что в 3.1 исправят ситуацию с несколькими главными страницами, а что же это тогда?

 

http://clip2net.com/clip/m33557/1275390444-clip-6kb.png

Ссылка на комментарий
Поделиться на других сайтах

Вроде была информация что в 3.1 исправят ситуацию с несколькими главными страницами, а что же это тогда?

 

http://clip2net.com/clip/m33557/1275390444-clip-6kb.png

Ну значит это не так :P

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.