带有 GET 参数的 RealURL
RealURL with GET parameters
我们开发了一个用于搜索卡车的 typo3 插件。出于 SEO 的原因,我们正在尝试使用 realURL 插件来使 URL 更易于使用。
在首页上,我们有几个操作调用 link 到具有特定搜索参数的搜索页面。示例如下:
/search-results/?tx_fds_searchresults[type_name]=Trailer
这 link 按预期工作。在结果页面上有一个 link 到列表页面,其中包含更多详细信息。示例如下:
/listing/?tx_fds_listing[id]=119870
此 link 无效。 tx_fds_listing[id]
未填充到传递给插件控制器的参数中。
起初我们认为这可能是一个配置问题,但同样,它并没有出现在其他页面上。
ID 不是数据库对象,可能是文本字符串。
编辑:
我应该补充一点,它在关闭 RealURL 的情况下工作正常。
我们得到的 id 为 $id = $this->request->getArgument('id');
编辑 2:
这是日志中的错误消息。
[ALERT] request="28233e225150a" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 201512141630381db91bba - {"exception":"exception 'TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException' with message 'An argument \"id\" does not exist for this request.'
我也试过将变量重命名为 name,但也没用。
我有解决问题根本原因的解决方案,即使不是具体问题。
所以我不得不向 realurl_conf.php 文件添加额外的映射。例如获取listing id:
$config['domain.com']['postVarSets'][3]['stock'] = array(array('GETvar' => 'tx_fds_listing[id]'));
这使得有效 URL:
/listing/stock/119870
这是插件的预期用途,所以这是一个很好的结果。我还为 ajax 和 pdf 添加了配置。这需要对不明显的错字进行修改。
PDF 译文:
pdf = PAGE
pdf {
typeNum = 300
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
#vendorName = TYPO3
extensionName = Fds
pluginName = Listing
#controller = FDS
controller = Tx_Fds_Controller_FDSController
#action = listingPdf
switchableControllerActions.FDS.1 = listingPdf
}
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:application/pdf
xhtml_cleaning = 0
admPanel = 0
}
}
PDF 真实URL 配置:
$config['domain.com']['postVarSets'][3]['pdf'] = array('type' => 'single', 'keyValues' => array ('type' => 300));
PDF有效URL:
/listing/pdf/stock/119870
我们开发了一个用于搜索卡车的 typo3 插件。出于 SEO 的原因,我们正在尝试使用 realURL 插件来使 URL 更易于使用。
在首页上,我们有几个操作调用 link 到具有特定搜索参数的搜索页面。示例如下:
/search-results/?tx_fds_searchresults[type_name]=Trailer
这 link 按预期工作。在结果页面上有一个 link 到列表页面,其中包含更多详细信息。示例如下:
/listing/?tx_fds_listing[id]=119870
此 link 无效。 tx_fds_listing[id]
未填充到传递给插件控制器的参数中。
起初我们认为这可能是一个配置问题,但同样,它并没有出现在其他页面上。 ID 不是数据库对象,可能是文本字符串。
编辑:
我应该补充一点,它在关闭 RealURL 的情况下工作正常。
我们得到的 id 为 $id = $this->request->getArgument('id');
编辑 2:
这是日志中的错误消息。
[ALERT] request="28233e225150a" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 201512141630381db91bba - {"exception":"exception 'TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException' with message 'An argument \"id\" does not exist for this request.'
我也试过将变量重命名为 name,但也没用。
我有解决问题根本原因的解决方案,即使不是具体问题。
所以我不得不向 realurl_conf.php 文件添加额外的映射。例如获取listing id:
$config['domain.com']['postVarSets'][3]['stock'] = array(array('GETvar' => 'tx_fds_listing[id]'));
这使得有效 URL:
/listing/stock/119870
这是插件的预期用途,所以这是一个很好的结果。我还为 ajax 和 pdf 添加了配置。这需要对不明显的错字进行修改。
PDF 译文:
pdf = PAGE
pdf {
typeNum = 300
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
#vendorName = TYPO3
extensionName = Fds
pluginName = Listing
#controller = FDS
controller = Tx_Fds_Controller_FDSController
#action = listingPdf
switchableControllerActions.FDS.1 = listingPdf
}
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:application/pdf
xhtml_cleaning = 0
admPanel = 0
}
}
PDF 真实URL 配置:
$config['domain.com']['postVarSets'][3]['pdf'] = array('type' => 'single', 'keyValues' => array ('type' => 300));
PDF有效URL:
/listing/pdf/stock/119870