简体   繁体   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 English (id-0) and French (id=1) Multi Language Site TYPO3 8.7.27 RealURL 2.5.0英语(id-0)和法语(id = 1)多语言站点

No matter what I do, RealURL keeps adding ?L=0 or ?L=1 to the end of every URL instead of actually creating real URLs. 不管我做什么,RealURL都会在每个URL的末尾添加?L = 0或?L = 1,而不是实际创建真实的URL。 That is, I'm getting www.domain.com/page1/?L=0 instead of www.domain.com/en/page1 也就是说,我得到的是www.domain.com/page1/?L=0,而不是www.domain.com/en/page1

I've tried turning autoconf on and off, and I've read every piece of documentation out there, specifically Dmitry's own https://github.com/dmitryd/typo3-realurl/wiki/Notes-for-Integrators#configuring-languages 我尝试打开和关闭autoconf,并且阅读了其中的所有文档,尤其是Dmitry自己的https://github.com/dmitryd/typo3-realurl/wiki/Notes-for-Integrators#configuring-languages

Here is the entire contents of /typo3conf/realurl_conf.php: 这是/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',
     ),
);

... and here is the relevent TypoScript: ...这是相关的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"
        }
     }
   }

As an examnple, if I click on "page1" in the menu, I'm taken to: www.domain.com/page1/?L=0 (which confirms that realURL is working, but also indicates something is wrong) 举例来说,如果我点击菜单中的“ page1”,则会进入:www.domain.com/page1/?L=0(这表明realURL可以正常工作,但也表明出现了问题)

I'm expecting, when I click on "page1" in the menu, I get taken to: www.domain.com/en/page1 我期望当我单击菜单中的“ page1”时,我将转到:www.domain.com/en/page1

Can anyone help me turn the "stuck" postVar into a proper preVar? 有人可以帮助我将“卡住的” postVar转换为适当的preVar吗? Thank you very much in advance for any help you can provide!!! 非常感谢您提供的任何帮助!!!

EDIT/UPDATE 1: Thanks to Heinz, I now have www.domain.com/fr/page1 but ONLY if I manually enter it - it doesn't work automatically through menus, etc. 编辑/更新1:感谢亨氏,现在我有了www.domain.com/fr/page1,但只有在我手动输入时-它不能通过菜单等自动运行。

EDIT/UPDATE 2: I modified realurl_conf.php as follows (added the full code + encode at bottom) to get auto generation (see below) but now it's always adding ?L to the end. 编辑/更新2:我对realurl_conf.php进行了如下修改(在底部添加了完整代码+编码)以实现自动生成(请参见下文),但是现在它总是在末尾添加?L。 That is, result is always www.domain.com/fr/page1/?L=1 when it should be www.domain.com/fr/page1 也就是说,结果应始终为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/'
         ),
      ),
  );

EDIT/UPDATE 3: If I do an .htaccess hack, I can get /en and /fr ... but it's ugly: 编辑/更新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]

Some of your config are not needed anymore or does nothing. 您的某些配置不再需要或什么也不做。 This should work: 这应该工作:

<?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