我们多年来一直在运行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的文档中所述。
但我们在其他地方有一些旧的网址,我们仍然愿意支持。
旧网址如下所示:
wiki.domain.com/wiki/Index.php/articlename
现在这个网址如下所示:
wiki.domain.com/wiki/articlename
但是使用旧网址,现在只是找不到找到的网页。
我们尝试使用online htaccess tester找到正确的RewriteRule。我们让它在那里工作。但不是在我们的apache服务器配置中使用它时。
在RewriteEngine On:
之后立即尝试使用此规则RewriteRule ^(.*?)index\.php(/|$) /$1 [R=301,NC,NE]
应该将用户重定向到新的网址。但我们仍然得到页面未找到错误,并且URL看起来仍然相同。 我们的新重写规则是错误的,还是apache配置中可能存在其他错误。如果需要,将提供配置文件。
答案 0 :(得分:0)
结束这条规则:
RewriteRule ^(.*?)index\.php\/(.*) $1$2 [L,NC,R=301]
选择index.php之前和之后的部分并使用()存储它们。使用$ 1和2创建新的URL字符串。我确信有更好的解决方案,但这也有效。