我在本地服务器上使用 mediawiki。我现在的 URL 是 127.0.0.1:8080/wiki/index.php/Main_Page
但是如果我的 wiki 网址是 www.nikunj.com/wiki,我想将上面提到的网址转换为 wiki.127.0.0.1:8080 或类似 wiki.nikunj.com 的网址
我读过这篇文章http://www.mediawiki.org/wiki/Manual:Short_URL但无法实现。
他们已经给出了如何使用 Lighthttpd 将 www.example.com 转换为 wiki.example.com。
以下是代码:
$HTTP["host"] == "wiki.example.com" {
server.document-root = "/path/to/webroot"
url.rewrite-once = (
"(^/[^:]*[\./].*)" => "$1",
"^/([^?]*)(?:\?(.*))?" => "/w/index.php?title=$1&$2",
)
}
我还有一个网站,比如 www.nikunj.com。我在那里将 wiki 安装到 www.nikunj.com/wiki,现在我想将其移植到 wiki.nikunj.com
我尝试过这个但是没有用。
使用 mod_rewrite:
<VirtualHost *:80>
ServerName wiki.nikunj.com
RewriteEngine on
RewriteRule ^/(.*) http://www.nikunj.com/wiki/$1 [R,L]
</VirtualHost>
使用 mod_alias:
<VirtualHost *:80>
ServerName wiki.nikunj.com
RedirectMatch ^/(.*) http://www.nikunj.com/wiki/$1
</VirtualHost>
但它不起作用,请帮帮我。
答案1
Lighthttpd url.rewrite-once 内部重写 URL。您建议的 Apache 配置代码将在两种情况下用于重定向。
对于lighttpd代码的解释: http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite#urlrewrite-once
实际上,您不需要做任何特殊的事情来使用 wiki.nikunj.com 而不是 nikunj.com 。只需像任何 VirtualHost 一样使用 ServerName 和 DocumentRoot 指令即可。
如果您的 MediaWiki 文件位于 /path/to/webroot/wiki,那么您的 DocumentRoot 指令将类似以下示例:
<VirtualHost *:80>
ServerName wiki.nikunj.com
DocumentRoot /path/to/webroot/wiki
</VirtualHost>
+++++
您还需要添加 MediaWiki 建议的 Apache 重写代码: http://www.mediawiki.org/wiki/Manual:Short_URL/Apache
对于上述代码,wiki.nikunj.com 使用 /path/to/webroot/wiki ,您需要在 /path/to/webroot/wiki/.htaccess 或上述 VirtualHost 块中包含此重写代码。
## http://www.mediawiki.org/wiki/Manual:Short_URL/Apache
RewriteEngine On
RewriteRule ^/?wiki(/.*)?$ /index.php [L]
RewriteRule ^/*$ /index.php [L]