Показать сообщение отдельно
Старый 07.04.2011, 14:39   #8
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 вне форума   Ответить с цитированием