mediawiki - 我可以使用 MediaWiki 将所有链接设为小写并使用连字符而不是下划线作为单词分隔符吗?

标签 mediawiki permalinks

我可以在 MediaWiki 中将链接设为小写并使用连字符而不是下划线作为单词分隔符吗?

WordPress 或其他 wiki 之类的 CMSes做。

最佳答案

好吧,有一种方法可以在主命名空间 中执行此操作,至少这样用户编辑的页面就有全小写/破折号分隔的 URL。

您首先手动强制您的页面全部小写并以破折号分隔。这样做的最初问题是您的内部链接现在必须在其中包含破折号,这消除了内部链接的标准简明语言样式并使它们几乎无法使用:

For examples of this see [[making-mediawiki-links-lowercase|making mediawiki links lowercase]].

制作一个新的维基链接不再是添加一对双方括号;必须重写整个链接文本(并且可以选择使用竖线重命名以便于阅读)。

但是有一种方法可以只重写链接上的 href。首先,对 LocalSettings.php 进行两处更改:

$wgCapitalLinks = False; # like mentioned above: make MW not capitalize the page titles
$wgHooks['LinkEnd'][] = "seoUrls"; # add a hook to rewrite the links
function seoUrls($dummy, Title $target, array $options, &$html, array &$attribs, &$ret) {
    $attribs = str_replace("_", "-", $attribs);
    return True;
}

这会重写内部链接的 href 以使用破折号而不是下划线,同时保持 anchor 的其余部分不变。

然后在那些有用户内容的页面上使用CSS隐藏(或修改模板文件去掉)常规标题。 CSS 将类似于:

.ns-0.action-view #firstHeading, /* main */
.ns-14.action-view #firstHeading /* categories */
{
    display: none
}

确实想为没有任何用户定义内容的页面保留标题,例如编辑 View 和特殊页面。我发现只有命名空间 0(主要)和 14(类别)需要隐藏。

最后,不是 Mediawiki 提供的标题,而是通过在页面内容本身的顶部添加一个 h1 来给页面一个标题。

您可能希望将所有带有下划线的 URL 也重写为破折号:

RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]

问题

  • 不存在的页面检测并不完全准确,因为它搜索的页面有空格,而不是破折号。但是,只要您删除了所有标题中有空格的旧页面,这就不是问题。
  • 因为首字母现在区分大小写,所以当内部链接是句子的第一个单词时需要重命名。
  • 目录和内联编辑部分链接的行为不同;由于 h1,它们现在会在每个页面上触发。

优势

  • 您可以随心所欲地制作标题。我喜欢用分类页来做内容,但不喜欢“Category:Blah”这样的标题。
  • 您还可以让页面标题使用 mediawiki 非法字符或非 ASCII 字符,而无需修改 URL。

关于mediawiki - 我可以使用 MediaWiki 将所有链接设为小写并使用连字符而不是下划线作为单词分隔符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478327/

相关文章:

mysql - 在 MediaWiki 中将 session 存储从文件更改为 MySQL

MediaWiki:在模板中包含页面名称

php - 使用不带 .htaccess 的 PHP 创建 SEO 永久链接

php - Wordpress URL 路由,具有不同模板的多个永久链接

python - GAE 在哪里存储永久链接?

iphone - iOS 应用程序中的维基百科

css - Mediawiki:我需要提示如何调试 »遇到异常,类型为 "ParseError"«

php - MySQL 查询在 mysql 中返回行,但在 PHP 中返回空集

wordpress - 分页不适用于固定链接设置为/%category%/%postname%/

php - 从 WordPress 类别 URL 中删除类别基础