没有扩展名的 Realurl 重写

Realurl rewrite without extension

我正在使用带有 Realurl 扩展名的 运行 TYPO3 6.2 网站。

在树中,我创建了一个 ID #66 的“汽车”页面,并以“汽车/”作为说话 url 路径段。我的页面现在可用 https://www.mywebsite.com/cars/。酷

如果继续 https://www.mywebsite.com/cars/audi,我需要的是在 Typoscript 中检索 audi 作为 GET 变量(GP:car_brand),但当前 Typo3 默认行为是搜索对于现有 cars 页面下方的 audi 页面...然后显示 404 错误。

我已经尝试过的:

1/ 在 .htaccess 中添加一个 RewriteRule:RewriteRule ^cars/(.*)$ /index.php?id=66&car_brand=/ [P]。它有效,但用户被重定向到 https://www.mywebsite.com/cars/?car_brand=audi,我们确实需要保留 cars/audi/ URL 方案,它更符合 SEO / 用户友好。

2/ 在我的 realurl_conf.php postVarSets 中添加自定义配置,但真正的url 很难理解,我没有处理它的技术技能:

<?php

'postVarSets' => [
    66 => array(
        array(
            'GETvar' => 'car_brand',
            'valueMap' => array(
                'no-comments' => 1
            ),
        

    'noMatch' => 'bypass',
        )
    ),

    ...

]

也许你可以尝试这样的事情:

'postVarSets' => array(
    '66' => array(
        'brand' => array(
            array(
                'GETvar' => 'car_brand',
                'noMatch' => 'bypass',
            ),
        ),
    ),
),

所以 URL 看起来像这样

https://www.mywebsite.com/cars/brand/audi

可能还有一个使用 fixedPostVars 的解决方案来避免 'brand' 段,但在那种情况下,get 参数 '?car_brand=xxx' 必须始终设置,所以我认为不是可能只有:https://www.mywebsite.com/cars

或者另一种解决方案是使用 userFunc,然后您可以自己管理 URL encoding/decoding.

弗洛里安

要添加 userFunc,请查看:

https://github.com/dmitryd/typo3-realurl/wiki/Configuration-reference#userfunc

在realurl_conf.php中:

'postVarSets' => array(
    '66' => array(
        'brand' => array(
            array(
                'GETvar' => 'car_brand',
                'userFunc' => 'Vendor\Userfuncs\Example->myExampleFunction',
                'noMatch' => 'bypass',
            ),
        ),
    ),
),

在你的 class 中:

namespace Vendor\Userfuncs;
class Example {
    function myExampleFunction($params, $ref) {
        if ($params["decodeAlias"]) {
            return ($decodedAlias));
        } else {
            return ($encodedAlias));
        }
    }
}