【问题标题】:Rewrite old mediawiki URL pattern to short URL format将旧的 mediawiki URL 模式重写为短 URL 格式
【发布时间】:2014-11-19 12:10:37
【问题描述】:

多年来,我们一直在运行 mediawiki 安装。在升级到较新版本期间,我们决定切换到维基百科使用的short url 模式。这工作正常。

所以我们的配置文件现在看起来像这样

  # Enable the rewrite engine
  RewriteEngine On

  # Short url for wiki pages
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
  RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [NC]

如 mediawiki 文档中所述。

但是我们在其他地方有一些旧的 URL,我们仍然希望支持。

旧网址如下所示:

wiki.domain.com/wiki/Index.php/articlename

现在这个 URL 看起来像这样:

wiki.domain.com/wiki/articlename

但是使用旧的 URL,现在只是给出了一个找不到的页面。

我们已尝试使用online htaccess tester 来查找正确的 RewriteRule。我们让它在那里工作。但在我们的 apache 服务器配置中使用它时不会。

在 RewriteEngine On 之后尝试使用此规则:

RewriteRule ^(.*?)index\.php(/|$) /$1 [R=301,NC,NE]

这应该将用户重定向到一个新的网址。但是我们仍然得到页面未找到错误,并且 URL 看起来仍然相同。 我们的新重写规则是错误的,还是 apache 配置中可能有其他错误。如果需要,将提供配置文件。

【问题讨论】:

  • Server Fault 上获得帮助可能更容易,因为这个问题与其说是编程问题,不如说是关于服务器配置的问题
  • 感谢您的意见。我将在服务器故障处尝试。我应该删除这篇文章,还是链接到 Server Fault 的新问题?所以有同样问题的人可以在那里找到它?

标签: apache mod-rewrite mediawiki


【解决方案1】:

以这条规则结束:

RewriteRule ^(.*?)index\.php\/(.*) $1$2 [L,NC,R=301]

选择index.php前后的部分,用()保存。使用 $1 和 2 创建一个新的 URL 字符串。我确信有更好的解决方案,但这也有效。

【讨论】:

    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多