Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 26.10.2010, 18:25   #1
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию Не работают ссылки вида index.php?id=1&L=1

Добрый день, коллеги!

На сайте работает мыльтиязычность настроенная на разные домены
domain.ru - русская версия сайта
domain.com - английская
в таком варианте все работает, как надо, работают ссылки вида:
domain.ru/ru/
domain.ru/en/
domain.com/ru/
domain.com/en/
но не работают ссылки вида:
http://domain.ru/index.php?id=1&L=1 (по идее должен быть английский, но выводит русский)
Отключаем RealURL эти ссылки начинают работать.

Что может быть? Помогите, пожалуйста!

Вот конфиг RealURL
Код:
<?php
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array (
	domain.ru' => array (
		'init' => array(
			'enableCHashCache' => true,
			'appendMissingSlash' => 'ifNotFile',
			'enableUrlDecodeCache' => true,
			'enableUrlEncodeCache' => true,
			'emptyUrlReturnValue' => '/',
		),
		'preVars' => array (
			array (
				'GETvar' => 'no_cache',
				'valueMap' => array (
				),
				'noMatch' => 'bypass',
			),
			array (
				'GETvar' => 'L',
				'valueMap' => array (
					'ru' => '0',
					'en' => '1'
				),
				'noMatch' => 'bypass',
				'valueDefault' => 'ru',
			),
			array (
				'GETvar' => '0',
				'valueMap' => array (
				),
				'noMatch' => 'bypass',
			),
		),
		'pagePath' => array (
			'type' => 'user',
			'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
			'spaceCharacter' => '-',
			'languageGetVar' => 'L',
			'languageExceptionUids' => '',
			'languageField' => 'sys_language_uid',
			'transOrigPointerField' => 'l18n_parent',
			'autoUpdate' => true,
			'expireDays' => 3,
			'rootpage_id' => 1,
		),
		'fixedPostVars' => array (
			'8' => array (
				array (
					'GETvar' => 'tx_indexedsearch[ext]',
					'valueMap' => array (
						'advanced' => 1,
					),
					'noMatch' => 'bypass',
				),
			),
		),
		'postVarSets' => array (
			'_DEFAULT' => array (
				// news archive parameters
				'view' => array (
					array (
						'GETvar' => 'tx_ttnews[year]',
					),
					array (
						'GETvar' => 'tx_ttnews[month]',
/*						'valueMap' => array(
							'january' => '01',
							'february' => '02',
							'march' => '03',
							'april' => '04',
							'may' => '05',
							'june' => '06',
							'july' => '07',
							'august' => '08',
							'september' => '09',
							'october' => '10',
							'november' => '11',
							'december' => '12',
						)
						*/
					),
					array (
						'GETvar' => 'tx_ttnews[day]',
					),
				),
				// news pagebrowser
				'browse' => array (
					array (
						'GETvar' => 'tx_ttnews[pointer]',
					),
				),
				// news categories
				'category' => array (
					array (
						'GETvar'	  => 'tx_ttnews[cat]',
						'lookUpTable' => array (
							'table' => 'tt_news_cat',
							'id_field' => 'uid',
							'alias_field' => 'title',
							'addWhereClause' => ' AND NOT deleted',
							'useUniqueCache' => 1,
							'useUniqueCache_conf' => array (
								'strtolower' => 1,
								'spaceCharacter' => '-',
//								'encodeTitle_userProc' => 'user_realurlEncTitle->process',
							),
						),
					),
				),
				// news articles and searchwords
				'article' => array (
					array (
						'GETvar' => 'tx_ttnews[tt_news]',
						'lookUpTable' => array (
							'table' => 'tt_news',
							'id_field' => 'uid',
							'alias_field' => 'title',
							'addWhereClause' => ' AND NOT deleted',
							'useUniqueCache' => 1,
							'useUniqueCache_conf' => array (
								'strtolower' => 1,
								'spaceCharacter' => '-',
//								'encodeTitle_userProc' => 'user_realurlEncTitle->process',
							),
						),
					),
					array (
						'GETvar' => 'tx_ttnews[swords]',
					),
				),
			),
//			'16' => '171',
		),
		'fileName' => array (
#			'defaultToHTMLsuffixOnPrev'=>1,
			'index' => array (
				'rss.xml' => array (
					'keyValues' => array (
						'type' => 100,
					),
				),
				'rss091.xml' => array (
					'keyValues' => array (
						'type' => 104,
					),
				),
				'rdf.xml' => array (
					'keyValues' => array (
						'type' => 101,
					),
				),
				'atom.xml' => array (
					'keyValues' => array (
						'type' => 103,
					),
				),
				'atom03.xml' => array (
					'keyValues' => array (
						'type' => 102,
					),
				),
				'sitemap.xml' => array (
					'keyValues' => array (
						'type' => 200,
					),
				),
			),
		),
	),
	'domain.com' => 'domain.ru',
	'_DOMAINS' => array (
		'encode' => array (
			array (
				'GETvar' => 'L',
				'value' => '0',
				'ifDifferentToCurrent' => true,
				'useConfiguration' => 'domain.ru',
				'urlPrepend' => 'http://domain.ru'
			),
			array (
				'GETvar' => 'L',
				'value' => '1',
				'ifDifferentToCurrent' => true,
				'useConfiguration' => 'domain.com',
				'urlPrepend' => 'http://domain.com'
			),
		),
		'decode' => array (
			'domain.ru' => array (
				'GETvars' => array (
					'L' => '0'
				),
				'useConfiguration' => 'domain.ru'
			),
			'domain.com' => array (
				'GETvars' => array (
					'L' => '1'
				),
				'useConfiguration' => 'domain.com'
			),
		),
	),
);
?>
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 26.10.2010, 23:00   #2
mazaev
Продвинутый
 
Регистрация: 13.03.2006
Сообщений: 67
Отправить сообщение для mazaev с помощью ICQ Отправить сообщение для mazaev с помощью Skype™
По умолчанию

RealUrl расширение которое превращает из id=1&L=1 в /ru.
Можно глупый вопрос? Зачем Вам такая ссылка?
При работе работе с RealUrl рекомендуется генерировать ссылки через typolink. Тогда все будет преобразовываться как нужно.
__________________
www.wbox.com.ua - сайт на TYPO3. Киев.
mazaev вне форума   Ответить с цитированием
Старый 26.10.2010, 23:39   #3
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

Цитата:
Сообщение от mazaev Посмотреть сообщение
Можно глупый вопрос? Зачем Вам такая ссылка?
Ссылки вида index.php?id=1&L=1 нужны в следующих случаях:
1. при редактировании контента на английском языке, если страница не активна, просмотр ее вызывает затруднения, т.к. вместо английского, я вижу русский вариант в просмотре.
2. tt_news выводит в LIST и SINGLE, для английского варианта выводит транслитерованные алиасы русского варианта новости, вместо английского алиаса. В то время как dd_googlesitemap генерирует английские алиасы. Таким образом для английского варианта сайта поисковик находит две одинаковые страницы по двум адресам, что не есть хорошо для SEO.
3. в индексированном поиске результаты в английском варианте для новостей не выводятся, зато в русском показывает результаты и на английском и на русском.

P.S. До привязывания языков к разным доменам все работало отлично, таким образом я предполагаю, что проблема заключается в операции декодирования URL модуля realurl, поскольку в конфигурировании realurl я ошибок не обнаружил, хотя возможно я и заблуждаюсь на этот счет, почему и спросил.

P.P.S. Если кому-то станет интересно локализовать ошибку, готов дать доступ к админке и на FTP. Готов, также, обсудить вопрос разумной материальной компенсации за решение данного вопроса.
__________________
Не ошибается тот, кто ничего не делает!

Последний раз редактировалось gabdullin; 26.10.2010 в 23:47 Причина: дополнение
gabdullin вне форума   Ответить с цитированием
Старый 27.10.2010, 10:20   #4
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 706
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Может стоит почитать этот документ: http://typo3.org/documentation/docum...de/1.1.0/view/
Я думаю, что все ответы там есть - вопрос лишь в грамотной настройке.
Андрей Аксенов вне форума   Ответить с цитированием
Старый 27.10.2010, 10:33   #5
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

Цитата:
Сообщение от Андрей Аксенов Посмотреть сообщение
Может стоит почитать этот документ: http://typo3.org/documentation/docum...de/1.1.0/view/
Я думаю, что все ответы там есть - вопрос лишь в грамотной настройке.
Прочитан и не раз. В том то и дело, что до момента привязки языка к домену все работает замечательно и с включенным realurl и с выключенным, поэтому стоит считать, что мультиязычность настроена правильно.
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 27.10.2010, 11:37   #6
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 706
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

ну да, недочитал про "отключаем RealURL - начинает работать нормально"...
Значит проблема с ним... А что, если убрать "свои" настройки для RealURL и попробовать по-умолчанию? Будет ли работать?
И еще... Может что-то есть здесь: http://dmitry-dulepov.com/article/re...-easy-way.html
Перевод этой статьи:
Цитата:
Легкое разделение языковых доменов при помощи RealURL
TYPO3 имеет полную поддержку создания многодоменных сайтов. Все знают параметр L в URL. Но что, если нужно создать раздельные домены для каждого языка в одном дереве страниц? До недавнего времени это было непросто сделать, и требовало определенной черной магии TYPO3. Здесь описано, как это сделать за 5 (или меньше) минут, а в качестве подарка получить лучшие позиции сайта в Google.
Обычно, при переключении языка сайта, в URL присутствует переменная L ('&L=1'). При использовании RealURL это будет выглядеть лучше, URL станет похож на http://example.com/en/. Вид значительно улучшился.
Проблема в том, что Google и другие поисковые движки предпочитают сервера в пользовательской доменной зоне. При одной ссылке, Google предпочтет домен «ru», домену «com», для русского и домен «de», для немецкого сайта. Поэтому, для поисковой оптимизации, становиться важным иметь домен в соответствующей стране зоне. Зарегистрировать домен просто, но как заставить RealURL использовать его, оставаясь в одном дереве страниц.
Разрешение этой проблемы — удаление языкового сегмента из URL, и преобразование http://example.com/ru/mypage в http://example.ru/mypage/ .
Возможно заполучить такие домены в TYPO3 после некого нетривиального колдовства с TypoScript. В качестве альтернативы — посредством написания кода. Но значительно проще, лучше и быстрее использовать RealURL.
Возможности RealURL для «языковых доменов»
Начиная с версии 1.5.0 RealURL поддерживает «языковые домены». Это именно то, что было описано выше: преобразование http://example.com/ru/mypage в http://example.ru/mypage/ прозрачно и без серьезных услий в TYPO3. Эта особенность требует лишь небольшой настройки RealURL.
Требования для настройки языковых доменов
Для включения языковых доменов, в настройках RealURL должно быть следующее:
определение языковых переменных в разделе preVars (смотрите выше)
специальную настройку _DOMAINS
С первой частью вопросов не возникает. А второе — что-то новенькое. Давайте сделаем ее!
Настройка _DOMAINS в RealURL
Настройка _DOMAINS описывает, как преобразуются значения параметров в URL в доменное имя. Другими словами, связывает переменную &L=0 с example.de, а &L=1 с example.ru.
Поддержка для этих языков настраива­ется в preVars примерно так:
'preVars' => array(
    array(
        'GETvar' => 'L',
        'valueMap' => array(
            'de' => 0,
            'ru' => 1
        ),
    ),
),
Теперь нужно определить, как эта preVar преобразуется в домены. А вот как:
'_DOMAINS' => array(
    'encode' => array(
        array(
            'GETvar' => 'L',
            'value' => '0',
            'useConfiguration' => 'example.com',
            'urlPrepend' => 'http://example.de'
        ),
        array(
            'GETvar' => 'L',
            'value' => '1',
            'useConfiguration' => 'example.com',
            'urlPrepend' => 'http://example.ru'
        )
    ),
    'decode' => array(
        'example.de' => array(
            'GETvars' => array(
                'L' => '0',
            ),
            'useConfiguration' => 'example.com'
        ),
        'example.ru' => array(
            'GETvars' => array(
                'L' => '1',
            ),
            'useConfiguration' => 'example.com'
        )
    )
)
Что здесь делается?
Первая часть кодирует URL. Здесь говориться, что при L=0 RealURL должно подставить http://example.de в URL (обратите внимание, без слеша в конце!). Для L=1 RealURL должно подставить http://example.ru в URL. Просто, не правда ли?
Вторая часть нужна для расшифровки. Она говорит RealURL, какой параметр L нужно установить, когда пользователь приходит на соответствующий домен. Также просто.
И финальное дополнение к настройкам:
$TYPO3_CONF_VARS['EXTCONF']['realurl']['example.de'] =
    $TYPO3_CONF_VARS['EXTCONF']['realurl']['example.ru'] = 'example.com';
Не забудьте добавить две новых записи для языковых доменов на корневую страницу в модуле Список.

Последний раз редактировалось Андрей Аксенов; 27.10.2010 в 11:48 Причина: Добавил перевод статьи
Андрей Аксенов вне форума   Ответить с цитированием
Старый 27.10.2010, 18:27   #7
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

Цитата:
Сообщение от Андрей Аксенов Посмотреть сообщение
ну да, недочитал про "отключаем RealURL - начинает работать нормально"...
Значит проблема с ним... А что, если убрать "свои" настройки для RealURL и попробовать по-умолчанию? Будет ли работать?
И еще... Может что-то есть здесь: http://dmitry-dulepov.com/article/re...-easy-way.html
Перевод этой статьи:
Спасибо за качественный перевод статьи Дулепова, именно по этой статье я и настраивал переадресацию на домены. Путем экспериментов c изменением настроек realurl выяснил, что проблема возникает на стадии кодирования ссылок, поэтому либо я ошибся в конфигурировании этого куска realurl:
Код:
	'_DOMAINS' => array (
		'encode' => array (
			array (
				'GETvar' => 'L',
				'value' => '0',
				'ifDifferentToCurrent' => true,
				'useConfiguration' => 'domain.ru',
				'urlPrepend' => 'http://domain.ru'
			),
			array (
				'GETvar' => 'L',
				'value' => '1',
				'ifDifferentToCurrent' => true,
				'useConfiguration' => 'domain.com',
				'urlPrepend' => 'http://domain.com'
			),
		),
либо в функции, выполняющей кодирование ссылок.
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 27.10.2010, 18:59   #8
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 706
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Кстати, логичнее было бы, чтобы русскоязычный сегмент относился к domain.ru, а англоязычный - к domain.com
И еще, может это опечатка, но в настройках следующее:
PHP код:
<?php
$TYPO3_CONF_VARS
['EXTCONF']['realurl'] = array (
    
domain.ru' => array (
а надо бы:
PHP код:
<?php
$TYPO3_CONF_VARS
['EXTCONF']['realurl'] = array (
    
'domain.ru' => array (
т.е. пропущена она кавычка перед domain.ru...

Тогда (если использовать ru - для русского языка, а com - для английского):
PHP код:
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array (
    
'domain.ru' => array (
...
'preVars' => array(
    array(
        
'GETvar' => 'L',
        
'valueMap' => array(
            
'ru' => 0,
            
'en' => 1
        
),
    ),
),
...
'_DOMAINS' => array(
    
'encode' => array(
        array(
            
'GETvar' => 'L',
            
'value' => '0',
            
'useConfiguration' => 'domain.ru',
            
'urlPrepend' => 'http://domain.ru'
        
),
        array(
            
'GETvar' => 'L',
            
'value' => '1',
            
'useConfiguration' => 'domain.ru',
            
'urlPrepend' => 'http://domain.com'
        
)
    ),
    
'decode' => array(
        
'domain.ru' => array(
            
'GETvars' => array(
                
'L' => '0',
            ),
            
'useConfiguration' => 'domain.ru'
        
),
        
'domain.com' => array(
            
'GETvars' => array(
                
'L' => '1',
            ),
            
'useConfiguration' => 'domain.ru'
        
)
    )


Последний раз редактировалось Андрей Аксенов; 28.10.2010 в 10:19
Андрей Аксенов вне форума   Ответить с цитированием
Старый 28.10.2010, 13:53   #9
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

Цитата:
Сообщение от Андрей Аксенов Посмотреть сообщение
Кстати, логичнее было бы, чтобы русскоязычный сегмент относился к domain.ru, а англоязычный - к domain.com
У меня так и сделано...

Цитата:
Сообщение от Андрей Аксенов Посмотреть сообщение
т.е. пропущена она кавычка перед domain.ru...
Это опечатка...
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 28.10.2010, 14:58   #10
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 706
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Как вариант, может быть ошибка в самом RealURL, хотя и маловероятно, но все же...
можно написать на офф. форуме багов...
У меня была другая ситуация с RealURL - не прописывались аллиасы для страниц - оказалось баг, Дмитрий исправил в очередной версии. Может и это из этой же серии?
Андрей Аксенов вне форума   Ответить с цитированием
Ответ

Теги
мультиязычность, realurl


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
tt_news архив: ссылки не работают Maria Rykalina Общие вопросы 4 03.12.2010 15:08
tt_news и ссылки на категории gabdullin Общие вопросы 0 25.07.2010 20:05
Многодоменный сайт. Части контента как ссылки. Dolphina Общие вопросы 3 02.11.2009 05:45
Неправильные ссылки на сайте (PHPSESSID) Илья Общие вопросы 1 13.05.2008 22:41
не работают ссылки в меню админки drucha Установка 6 15.04.2007 15:55


Часовой пояс GMT +4, время: 17:30.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория