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

Хук склеивания нескольких главных страниц 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

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

Зарузка...

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

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

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