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

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

Ответ
 
Опции темы Опции просмотра
Старый 06.04.2011, 19:38   #1
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Не получиться в .../print/
Так как RealURL умеет добавлять фиксированные переменные только в начало пути, т.е. /en/... или /print/...
Добавить "в самый конец" можно только опцией fileName.

Ну, вообщем, для конечного пользователя нет разницы как выглядит урл, можно и так и эдак сделать.

Самое главное, что для SEO плохо что page/ и page.html выдают одно и тоже, а это поведение что называется "из коробки".
dmartynenko вне форума   Ответить с цитированием
Старый 07.04.2011, 07:35   #2
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Так на самом деле вполне будет логично выглядеть url типа domain.tld/print/page/id/ - и совершенно точно он не будет отзываться ни на какие *.html
Хотя, насколько я помню при использовании .htaccess в мануале к RealURL был комментарий к какой-то строке "при использовании такой настройки filename работать правильно не будут" (это вольный перевод - передача общего смысла фразы). Можеть быть дело в этом?
Потому что у меня работает вроде как вполне адекватно все и при использовании .html и без него.
-=UncleByte=- вне форума   Ответить с цитированием
Старый 07.04.2011, 14:39   #3
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от -=UncleByte=- Посмотреть сообщение
Так на самом деле вполне будет логично выглядеть url типа domain.tld/print/page/id/ - и совершенно точно он не будет отзываться ни на какие *.html
Судя по тому какое поведение я наблюдаю сейчас на последнем RealURL, то получиться что и в этом случае domain.tld/print/page/id/ и domain.tld/print/page/id.html будут показывать одно и тоже.

РЕШЕНИЕ!

Все оказалось просто, но не очевидно. В новой версии проверка наличия суффикса делается вот так:
PHP код:
protected function decodeSpURL_decodeFileName_checkHtmlSuffix($fileName$segment$extension, array &$pathParts) {
    
$handled false;
    if (isset(
$this->extConf['fileName']['defaultToHTMLsuffixOnPrev'])) {
        
$suffix $this->extConf['fileName']['defaultToHTMLsuffixOnPrev'];
        
$suffix = (!$this->isString($suffix'defaultToHTMLsuffixOnPrev') ? '.html' $suffix);
        if (
$suffix == '.' $extension) {
            
$pathParts[] = rawurlencode($segment);
            
$this->filePart '.' $extension;
        }
        else {
            
$this->decodeSpURL_throw404('File "' $fileName '" was not found (2)!');
        }
        
$handled true;
    }
    return 
$handled;

Т.е. даже если defaultToHTMLsuffixOnPrev установлен в ноль в конфиге, то это означает что .html суффиксы будут приняты!

Причем этот конфиг предлагается по умолчанию как в примерах, так и в autoconf, вот кусок из class.tx_realurl_autoconfgen.php
PHP код:
'fileName' => array(
    
'defaultToHTMLsuffixOnPrev' => 0,
    
'acceptHTMLsuffix' => 1,

Поэтому, что бы суффиксы .html давали 404 ошибку, строку с defaultToHTMLsuffixOnPrev из конфига нужно убрать совсем!

PS: Скорее это просто баг, на это указывает то что при генерации этот параметр учитывается простой проверкой, а не isset()
PHP код:
    elseif ($url != '') {
        
$suffix $this->extConf['fileName']['defaultToHTMLsuffixOnPrev'];
        if (
$suffix) { 
dmartynenko вне форума   Ответить с цитированием
Старый 07.04.2011, 15:33   #4
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Скорее надо выставить acceptHTMLsuffix в 0 - тогда RealURL не будет его воспринимать как еще один вариант именования страницы. Насколько помню это сделано для упрощения миграции со статичных сайтов на динамические.
-=UncleByte=- вне форума   Ответить с цитированием
Старый 07.04.2011, 15:38   #5
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Может быть ту информацию, которую я излагал выше сложно целиком воспринять.
Но еще раз повторю то, что уже писал - acceptHTMLsuffix в последних версиях RealURL не используется и не учитывается нигде.
dmartynenko вне форума   Ответить с цитированием
Старый 07.04.2011, 18:19   #6
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Я все прочитал, но мне с трудом верится что задокументированный функционал никоим образом не функционирует. Возможно что и так, не стану утверждать наверняка пока сам не опробую на новых версиях.
Кстати, а конфигурация писалась с нуля собственноручно или как шаблон использовалась автоматическая?
-=UncleByte=- вне форума   Ответить с цитированием
Старый 07.04.2011, 19:00   #7
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Либо документация не поспевает, либо код переработан и этот параметр просто "забыли".
Тот код, что я видел в исходниках RealURL полгода назад, сильно отличается от того что есть сейчас.
Проверить acceptHTMLsuffix легко - берете название параметра и ищите по исходникам где он встречается.

Мой конфиг - самый что ни есть типовой:
PHP код:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$site_name] = array (
    
'init' => array (
        
'enableCHashCache' => true,
        
'appendMissingSlash' => 'ifNotFile,redirect',
        
'adminJumpToBackend' => true,
        
'enableUrlDecodeCache' => true,
        
'enableUrlEncodeCache' => true,
        
'emptyUrlReturnValue' => '/',
    ),
    
'pagePath' => array (
        
'type' => 'user',
        
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
        
'spaceCharacter' => '-',
        
'languageGetVar' => 'L',
        
'segTitleFieldList' => 'tx_realurl_pathsegment,alias,nav_title,title',
        
'rootpage_id' => 1,
    ),
    
'fileName' => array (
        
// 'defaultToHTMLsuffixOnPrev' => 0,
        // 'acceptHTMLsuffix' => 0,
        
'index' => array (
            
'print.htm' => array (
                
'keyValues' => array ('type' => 98),
            ),
        ),
    ) 
dmartynenko вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильней сделать Владимир Умнов Общие вопросы 2 12.10.2005 11:44


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


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

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