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

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


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

Хук делает:

 

- все главные страницы по списку (по-умолчанию это "/index.php", "/index", "/index.php?act=idx" и "/index.php?") переадресовывает (301) на заданный адрес (по-умолчанию - "/"),

- на все остальные не существующие страницы ("/meow", "/any_text_you_want") отдает 404 с вашим текстом.

 

Текст страницы 404 задается в настройках хука. Можно использовать HTML!

 

post-75890-1268749612_thumb.png

 

Основная версия хука (1.0.4):

ritsu_redirect.xml.tar.gz

 

Изменения в 1.0.4:

- обработка сессий для всех адресов

- список "белых" страниц для переадресовки

- настройка конечного адреса переадресовки

- настройка текста страницы 404

- два режима работы (с 404 и полная переадресовка)

Изменения в 1.0.3:

- сессии в url

Изменения в 1.0.2:

- снова ошибка в работе с форумом в поддиректории, спасибо dengol

Изменения в 1.0.1:

- обработка "/index.php?act=idx",

- корректная работа с форумом в поддиректории ("http://example.com/forum/").

 

Старые версии:

ritsu_404.xml.tar.gz

ritsu_404_portal.xml.tar.gz

ritsu_redirect.xml.tar.gz

ritsu_404.xml.tar.gz

 

Посмотреть в действии можно тут:

_http://www.rakuen.ru/
_http://www.rakuen.ru/index.php
_http://www.rakuen.ru/index
_http://www.rakuen.ru/index.php?
_http://www.rakuen.ru/hello

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

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

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

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

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

Спасибо! Ушёл тестить :D

 

UPD Всё отлично работает. Огромное спасибо, Ritsuka! ;)

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

При включенной в серверном окружении опции обработки неверных урлов с 301 направлением наблюдаются глюки.
Ссылка на комментарий
Поделиться на других сайтах

2rok вы заблуждаетесь и сравниваете кислое с быстрым.

 

site.name/index и site.name/index.php? - это ошибка, а не нормальное положение вещей. site.name/forum/* - это вполне правильный путь

Эта тема как раз о том, чтобы исправить ошибки.

Конечно я заблуждаюсь ;)

Я прекрасно понимаю что это ошибка и как раз ищу метод её устранения :D

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

Метод от Ritsuka у меня не работает. Теперь с портала я не могу зайти на форум, ибо идёт редирект, а главной страницей у меня задан портал :D

Так же ссылки как были, так и остались..

/index.php?app=portal

/index.php?

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

Ritsuka, спасибо, всё отлично работает!

 

Единственное нужно сказать что если форум к примеру стоит не в корне ( / ) а в директории ( /dir/ ) то нужно в хуках путь изменить.

А вобщем всё замечательно!

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

Ritsuka, спасибо, всё отлично работает!

 

Единственное нужно сказать что если форум к примеру стоит не в корне ( / ) а в директории ( /dir/ ) то нужно в хуках путь изменить.

А вобщем всё замечательно!

Не подскажете как? Видимо у меня отсюда и рождаются глюки...) форум стоит на example.ru/forum/

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

rinich, черт, и правда, не подумал о таком варианте ^^

 

Быстрое решение без переустановки - в /hooks/ritsu_redirect_[0-9a-f].php найдите строку:

header('Location: /');

и замените на:

header('Location: /forum/');

 

А вообще надо было {$INFO['board_url']."/"} использовать конечно...

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

2rok, правильно, на нестандартную главную страницу хук не рассчитан.

Я это уже понял!

Мой вопрос остаёться открытым.

Что бы первая страница (В моём случае портал) была просто косой "site.nema/", а форум был не "site.name/index", а "site.name/forum/".

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

Для нормальной работы нужно не только здесь изменить header('Location: /');

Редирект в таком случае не будет правильно обрабатываться!

 

 

находим:

 

				if($_SERVER['REQUEST_URI'] != "/") 
			{

					if($_SERVER['REQUEST_URI'] == "/index.php?" || $_SERVER['REQUEST_URI'] == "/index" || $_SERVER['REQUEST_URI'] == "/index.php") {

							ob_end_clean();
							header('HTTP/1.1 301 Moved Permanently');
							header('Location: /');
							die();

 

 

меняем на:

 

				if($_SERVER['REQUEST_URI'] != "/forum/") 
			{

					if($_SERVER['REQUEST_URI'] == "/forum/index.php?" || $_SERVER['REQUEST_URI'] == "/forum/index" || $_SERVER['REQUEST_URI'] == "/forum/index.php") {

							ob_end_clean();
							header('HTTP/1.1 301 Moved Permanently');
							header('Location: /forum/');
							die();

 

Это если форум стоит в директории forum, если директория называется по другому, то необходимо изменить на свою.

 

Для того чтобы портал был на главной вида типа name.ru/

то нужно в initdata.php добавить

define( 'IPS_DEFAULT_PUBLIC_APP', 'portal' );

 

 

Update

 

После установки мода 301 редиректа от Ritsuka при изменении статуса в боковой колонке выбрасывает на 404 страницу.

Ссылка получается вот такого вида:

http://www.site.name/forum/index.php?act=idx

 

Ritsuka, подскажи, в данном случае такое решение будет правильным?

if($_SERVER['REQUEST_URI'] == "/forum/index.php?" || $_SERVER['REQUEST_URI'] == "/forum/index" || $_SERVER['REQUEST_URI'] == "/forum/index.php" || $_SERVER['REQUEST_URI'] == "/forum/index.php?act=idx")

 

Возможны ли еще какие-то варианты страниц с index.php? ?

Ведь если еще будут попадаться аналогичные страницы то пользователя будет выбрасывать на 404, а очень не хотелось бы)))

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

dengol, правильным будет решение с прерпарсингом BOARD_URL на предмет субдиректорий и их автоподстановку. Сейчас поправлю :D

 

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

 

C idx конечно отожгли ребята... 4-я ссылка на главную уже. Через пару часов выложу поправленный хук, как до рабочего ПК доберусь.

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

dengol, проверяю на локали - все работает :D

 

Есть такой вариант - откройте на правку файл /hooks/ritsu_redirect_*.php и добавьте после строки:

				$path = (isset($matches['2'])) ? $matches['2']."/" : "/";

 

строки:

				if($this->memberData['member_id'] == '1' /* здесь вместо 1 поставьте свой id */){

					ob_end_clean();
					echo($path."\n");
					echo(htmlspecialchars($_SERVER['REQUEST_URI'])."\n");
				  die();

			}

 

На главной форума только у вас вместо содержимого страницы появится кое-какая отладочная инфа, сможете её скопировать и разместить тут?

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

лишний слеш, я правильно понял?

Должно было быть:

/talk/ /talk/

 

Вроде правильная регулярка, на моем форуме корректно срабатывает... Дадите временный ftp-доступ в папку /hooks/ для опытов?

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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