День добрый. Вопрос уже задавал на ipbskins. Получил ответ, что он [вопрос] обсуждался здесь. Поиском пользовался, но, к сожалению, так и не нашел ответа. Просьба, помочь в решении, либо указать ссылку на тему, где обсуждалась данная проблема. Собираю на локальном сервере форум. Поставил ipb 3.3.3, ip content 2.3.2, установил его главной страницей, .htaccess mod_rewrite включен, тип url - путь. Если пользователь не авторизован, то при нажатии на сылку, указанную на скрине, пользователя переадресовывает по адресу: www.test.ru/forums/topic/2-proverka/ Это меня вполне устраивает. Т.е. гостя перебрасывает в начало темы. После того, как пользователь авторизуется, то при нажатии на ссылку, указанную на скрине, пользователя переадресовывает по адресу: www.test.ru/forums/topic/2#entry4-proverka/ , где жирным выделена часть, которая отвечает за переадресацию на последнее сообщение темы. Этот якорь ошибочный и мне нужно привести данную ссылку к виду: www.test.ru/forums/topic/2-proverka/#entry4 Насколько я понял, это изменяется в furlTemplates.php Код моего furlTemplates.php:
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* Sets up SEO templates
* Last Updated: $Date: 2011-08-02 15:53:39 -0400 (Tue, 02 Aug 2011) $
* </pre>
*
* @author $Author: bfarber $
* @copyright © 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionp...rd/license.html
* @package IP.Board
* @subpackage Forums
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 9351 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* SEO templates
*
* 'allowRedirect' is a flag to tell IP.Board whether to check the incoming link and if not formatted correctly, redirect the correct one
*
* OUT FORMAT REGEX:
* First array element is a regex to run to see if we've a match for the URL
* The second array element is the template to use the results of the parenthesis capture
*
* Special variable #{__title__} is replaced with the $title data passed to output->formatUrl( $url, $title)
*
* IMPORTANT: Remember that when these regex are used, the output has not been fully parsed so you will get:
* showuser={$data['member_id']} NOT showuser=1 so do not try and match numerics only!
*
* IN FORMAT REGEX
*
* This allows the registry to piece back together a URL based on the template regex
* So, for example: "/user/(\d+?)/", 'matches' => array( array( 'showuser' => '$1' ) )tells IP.Board to populate 'showuser' with the result
* of the parenthesis capture #1
*/
$_SEOTEMPLATES = array(
'showannouncement' => array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#showannouncement=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'forums/forum-$3/announcement-$1-#{__title__}/$4' ),
'in' => array( 'regex' => '#/forums/forum-(\d+?)?/announcement-(\d+?)-#i',
'matches' => array( array( 'showannouncement', '$2' ), array( 'f', '$1' ) ) ) ),
'showforum' => array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#showforum=(.+?)(&|$)#i', 'forums/forum/$1-#{__title__}/$2' ),
'in' => array( 'regex' => '#^/forums/forum/(\d+?)-#i',
'matches' => array( array( 'showforum', '$1' ) ) ) ),
'showtopicunread'=> array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#showtopic=(.+?)(?:&|&)view=getnewpost(&|$)#i', 'forums/topic/$1-#{__title__}/unread/$2' ),
'in' => array( 'regex' => '#^/forums/topic/(\d+?)-([^/]+?)/unread(/|$)#i',
'matches' => array( array( 'showtopic', '$1' ),
array( 'view', 'getnewpost' ) ) ) ),
'showtopicnextunread'=> array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#showtopic=(.+?)(?:&|&)view=getnextunread(&|$)#i', 'forums/topic/$1-#{__title__}/nextunread/$2' ),
'in' => array( 'regex' => '#^/forums/topic/(\d+?)-([^/]+?)/nextunread(/|$)#i',
'matches' => array( array( 'showtopic', '$1' ),
array( 'view', 'getnextunread' ) ) ) ),
'showtopic' => array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#showtopic=(.+?)(&|$)#i', 'forums/topic/$1-#{__title__}/$2' ),
'in' => array( 'regex' => '#^/forums/topic/(\d+?)-#i',
'matches' => array( array( 'showtopic', '$1' ) ) ) ),
'acteqst' => array( 'app' => 'forums',
'allowRedirect' => 1,
'out' => array( '#act=ST(.*?)&t=(.+?)(&|$)#i', 'forums/topic/$2-#{__title__}/$3' ),
'in' => array( 'regex' => '#^notavalidrequest$#i',
'matches' => array( array( 'showtopic', '0' ) ) ) ),
'act=idx' => array( 'app' => 'forums',
'allowRedirect' => 0,
'out' => array( '#act=idx(&|$)#i', 'forums/$1' ),
'in' => array( 'regex' => '#^/forums(/|$|\?)#i',
'matches' => array( array( 'act', 'idx' ) ) ) ),
);
Специалист siv1987 сообщил, что этот баг не связан с ЧПУ. Но я все же решил приложить код, чтобы не возникало вопросов.