繁体   English   中英

对于多语言站点,RealURL使用L = 0 PostVar代替/ en PreVar

[英]RealURL Uses L=0 PostVar instead of /en PreVar for Multi Language Site

TYPO3 8.7.27 RealURL 2.5.0英语(id-0)和法语(id = 1)多语言站点

不管我做什么,RealURL都会在每个URL的末尾添加?L = 0或?L = 1,而不是实际创建真实的URL。 也就是说,我得到的是www.domain.com/page1/?L=0,而不是www.domain.com/en/page1

我尝试打开和关闭autoconf,并且阅读了其中的所有文档,尤其是Dmitry自己的https://github.com/dmitryd/typo3-realurl/wiki/Notes-for-Integrators#configuring-languages

这是/typo3conf/realurl_conf.php的全部内容:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['preVars'] => array(
    array(
        'GETvar' => 'L',
        'valueMap' => array(
          'en' => 0,
          'fr' => 1,
        ),
            'valueDefault' => 'en',
            'noMatch' => 'bypass',
     ),
);

...这是相关的TypoScript:

config {
  baseURL = {$BASE_URL}
  absRefPrefix = {$BASE_URL}
  tx_realurl_enable = 1
  simulateStaticDocuments = 0
  #linkVars = L(int)
  sys_language_uid = 0
  language = en
  locale_all = en_US.UTF-8
  htmlTag_langKey = en
  #htmlTag_setParams = lang="en" dir="ltr" class="no-js"
  linkVars = L
  uniqueLinkVars=1
  sys_language_mode = content_fallback
  sys_language_overlay = 1
  defaultGetVars {
     L = 0
  }
}
[globalVar = GP:L = 1]
    config {
            sys_language_uid = 1
            language = fr
            locale_all = fr_FR.UTF-8
            htmlTag_langKey = fr
            #htmlTag_setParams = lang="fr" dir="ltr" class="no-js"
    }
[global]


page.19.variables.LANGUAGE = HMENU
page.19.variables.LANGUAGE {
    special = language
    special.value = 1,0
    1 = TMENU
    1 {
        wrap = <ul id="language"> | </ul>
        NO = 1
        NO {
            wrapItemAndSub = <li> | </li>
            stdWrap.override = FR || EN
        }
        ACT < .NO
        ACT {
           ATagParams = class="active"
        }
     }
   }

举例来说,如果我点击菜单中的“ page1”,则会进入:www.domain.com/page1/?L=0(这表明realURL可以正常工作,但也表明出现了问题)

我期望当我单击菜单中的“ page1”时,我将转到:www.domain.com/en/page1

有人可以帮助我将“卡住的” postVar转换为适当的preVar吗? 非常感谢您提供的任何帮助!!!

编辑/更新1:感谢亨氏,现在我有了www.domain.com/fr/page1,但只有在我手动输入时-它不能通过菜单等自动运行。

编辑/更新2:我对realurl_conf.php进行了如下修改(在底部添加了完整代码+编码)以实现自动生成(请参见下文),但是现在它总是在末尾添加?L。 也就是说,结果应始终为www.domain.com/fr/page1/?L=1,而应为www.domain.com/fr/page1

<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']= array (

    'fixedPostVars' => array (
    ),
    'pagePath' => array (
        'type' => 'user',
        'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
        'spaceCharacter' => '-',
        'languageGetVar' => 'L',
        'rootpage_id' => '1'
    ),

   'init' =>
   array (
     'appendMissingSlash' => 'ifNotFile,redirect',
     'emptyUrlReturnValue' => '/',
    ),
   'pagePath' =>
   array (
     'rootpage_id' => '1',
   ),
  'fileName' =>
      array (
     'defaultToHTMLsuffixOnPrev' => 0,
     'acceptHTMLsuffix' => 1,
     'index' =>
     array (
       'print' =>
       array (
         'keyValues' =>
             array (
               'type' => 98,
             ),
       ),
   ),
),
'preVars' =>
array (
  0 =>
  array (
    'GETvar' => 'L',
    'valueMap' =>
    array (
      'en' => '0',
      'fr' => '1',
    ),
    /*'valueDefault' => 'en',
    'noMatch' => 'bypass',*/
  ),
),
'postVarSets' =>
array (
  '_DEFAULT' =>
  array (
    'news' =>
    array (
      0 =>
      array (
        'GETvar' => 'tx_news_pi1[news]',
        'lookUpTable' =>
        array (
          'table' => 'tx_news_domain_model_news',
          'id_field' => 'uid',
          'alias_field' => 'IF(path_segment!="",path_segment,title)',
          'addWhereClause' => ' AND NOT deleted',
          'useUniqueCache' => 1,
          'expireDays' => 180,
          'enable404forInvalidAlias' => true,
          ),
        ),
      ),
    ),
  ),
);

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DOMAINS'] = array(
    'encode' => array(
        array(
            'GETvar' => 'L',
            'value' => '0', // en
            'useConfiguration' => '_DEFAULT',
            'urlPrepend' => '/en/'
        ),
        array(
           'GETvar' => 'L',
           'value' => '1', // fr
           'useConfiguration' => '_DEFAULT',
           'urlPrepend' => '/fr/'
         ),
      ),
  );

编辑/更新3:如果我执行.htaccess hack,我可以得到/ en和/ fr ...,但是很丑陋:

# Remove trailing ?L GET parameter from RealURL
RewriteCond %{QUERY_STRING}  ^L=0$ [NC]
RewriteRule ^(.*)$ https://cmhw.stormiscoming.ca/en/$1? [R=301,L]
RewriteCond %{QUERY_STRING}  ^L=1$ [NC]
RewriteRule ^(.*)$ https://cmhw.stormiscoming.ca/fr/$1? [R=301,L]

您的某些配置不再需要或什么也不做。 这应该工作:

<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'] = array (
    'init' => array (
        'appendMissingSlash' => 'ifNotFile,redirect',
        'emptyUrlReturnValue' => 1,
    ),
    'preVars' => array (
        array (
            'GETvar' => 'L',
            'valueMap' => array (
                'en' => '0',
                'fr' => '1',
            ),
        ),
    ),
    'pagePath' => array (
        'rootpage_id' => '1'
    ),
    'fixedPostVars' => array (
    ),
    'fileName' => array(),
    'postVarSets' => array(
        '_DEFAULT' => array (
            'news' => array (
                array (
                    'GETvar' => 'tx_news_pi1[news]',
                    'lookUpTable' => array (
                        'table' => 'tx_news_domain_model_news',
                        'id_field' => 'uid',
                        'alias_field' => 'IF(path_segment!="",path_segment,title)',
                        'addWhereClause' => ' AND NOT deleted',
                        'useUniqueCache' => 1,
                        'expireDays' => 180,
                        'enable404forInvalidAlias' => true,
                    ),
                ),
            ),
        ),
    ),
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM