[英]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.