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

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

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

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

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

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

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

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

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

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

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

Зарузка...

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

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

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