可能重复: MediaWiki on SubDirectory and SubDomain(但没有答案,也没有任何回复提供帮助)
好吧,我正在尝试将MediaWiki配置为安装到子目录。我以前使用短网址为/wiki/Main_Title
的mod_rewrite将其安装到http://www.example.com/上的主域中。
作为备注,我也在HostGator共享托管,其中special rules为简短网址。
我的目录结构是这样的:
/
(site root; location of .htaccess)
/wiki/
(mediawiki root; location of LocalSettings.php)
这是我试过的,
.htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\&(.*)$ $1\%26$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.+)$ ./wiki/index.php?title=$1 [PT,L,QSA]
/wiki/LocalSettings.php
## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs please see:
## http://www.mediawiki.org/wiki/Manual:Short_URL
##
$wgScriptPath = "/wiki";
$wgScriptExtension = ".php";
$wgArticlePath = "$wgScriptPath/$1";
然而,我什么都没得到。我只是得到403/Forbidden
错误;没有500 Internal Server Error
,只有403 - 网址http://www.example.com/ 。就好像什么都没做完。我试图想出这个问题,把头撞在了墙上。任何帮助表示赞赏。
提前致谢!
答案 0 :(得分:1)
的目的是什么?
RewriteRule ^(.*)\&(.*)$ $1\%26$2
你完全失去了我。具有第二个参数的任何URI将无限循环并生成500状态返回。
如果您阅读了重写文档:
匹配什么?
...如果您希望与...查询字符串匹配,请使用带有...
%{QUERY_STRING}
变量的RewriteCond
&通常是查询参数的一部分。在格式错误的URI(例如fred&q=1
)的情况下,它可以出现在RewriteRule模式中。默认情况下,mod_rewrite会将其视为fred?q=1
,但这会将其转换为转义的%26变体,因此这将作为标题fred&q=1
传递给MW(顺便说一下,这是一个无效的MW标题) 。我认为你应该摆脱它,或者至少理解你在这里想做什么。
最后一行应该是
RewriteRule ^wiki/(.+) wiki/index.php?title=$1 [PT,L,QSA]
并保持RewriteBase
否则mod_rewrite可能会混淆。
这应该可行: - )
答案 1 :(得分:0)
你走在正确的轨道上......如果你在共享环境中,那么试试这个:
RewriteEngine on
# Comment to force base to be the subdir:
# RewriteBase /
RewriteRule ^(.*)\&(.*)$ $1\%26$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.+)$ ./wiki/index.php?title=$1 [PT,L,QSA]
如果您不在托管环境中(=如果它是您自己的服务器并且您可以修改虚拟主机,而不仅仅是.htaccess
文件),请尝试使用RewriteLog
指令:它帮助您追踪此类问题:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢检查regexp的工具:
http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)
答案 2 :(得分:0)
我的HostGator门票解决了这个问题,虽然没有帮助。我希望有一个单 .htaccess
解决方案,而不是双重.htaccess
重定向/重写。但是,这是我的解决方案。
<强> /
强>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^.*$ http://www.example.com/wiki/
<强> /wiki/
强>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]
答案 3 :(得分:0)
我尝试了不同的解决方案,对我有用的是将media.hiki子文件夹中的.htaccess更改为
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wikifolder/index.php [L]
</IfModule>