christianbarkowsky / contao-urlcleaner
移除URL中的不需要部分,如'items'或'events'
Requires
- php: >=5.3
- contao/core: >=3.0,<4
This package is auto-updated.
Last update: 2022-11-20 17:06:19 UTC
README
移除URL中的不需要部分,如"items"或"events"
工作原理
Contao的许多读者,例如新闻读者或事件读者,会将所需条目作为URL参数。然而,例如URL中前面有一个"/items/"或"/events/"。从用户角度和搜索引擎优化角度来看,URL的这一部分是不需要的。urlcleaner扩展提供了从这类不需要片段中清理URL的可能性。
重定向发生在两个方向:一方面,在链接到此类URL时,会从URL中删除不必要的部分。另一方面,在调用相应的URL时,会自动但不可见地添加已删除的元素。
应用
安装后,必须为每个要清理的URL在 localconfig.php 中添加一个条目。
重要:条目末尾不允许有斜杠!
重要:配置代码必须插入到### 安装脚本停止 ### 之前。
$GLOBALS['TL_CONFIG']['arrUrlFragments'] = array( 'news-reader' => 'items', );
在此示例中,将形如 /news-reader/items/alias 的URL重写为 /news-reader/alias。如果需要重写多个URL,则可以输入多行。例如
$GLOBALS['TL_CONFIG']['arrUrlFragments'] = array( 'news-reader' => 'items', 'event-reader' => 'events', );
重写也可以在多个级别上进行。例如,如果博客条目的读者位于 /weblog/reader/ 下,并且URL为 /weblog/reader/items/alias,则可以按照以下方式重写
$GLOBALS['TL_CONFIG']['arrUrlFragments'] = array( 'weblog' => 'reader/items', );
重要
在展开URL时,会检查是否存在具有相应别名的页面。在这种情况下,不会展开URL。
在上面的最后一个示例中:/blog/foobar 是一个页面(假设已安装 folderurl) /blog/reader/items/foobar 是消息的正常URL
在链接到消息时,/blog/reader/items/foobar 将按照预期重写为 /blog/foobar。但是,当调用此URL时,会显示页面而不是消息。因此,请注意,元素的别名不应与其他(子)页面的别名相同。
避免重复内容
虽然在使用urlcleaner时,Contao内的所有链接都将完全替换,但内容仍然可以通过正常URL访问。这构成了所谓的重复内容,即在不同URL下有相同的内容,这会对搜索引擎排名产生负面影响。
因此,建议通过在 .htaccess 中添加条目将正常URL重定向到新的简写形式。以下是一些规则示例
RedirectMatch 301 ^(.*)/newsreader/items/(.*) $1/newsreader/$2
RedirectMatch 301 ^(.*)/eventreader/events/(.*) $1/eventreader/$2
如果将系统中的所有位置(例如使用"items"作为参数的位置)都重定向,则也可以使用单个重写规则进行重定向
RedirectMatch 301 ^(.*)/items/(.*) $1/$2
许可证:https://gnu.ac.cn/licenses/lgpl-3.0.html LGPL
作者: christianbarkowsky