没有扩展名的 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));
}
}
}
我正在使用带有 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));
}
}
}