将 Lighttpd 规则转换为 apache 规则

将 Lighttpd 规则转换为 apache 规则

我在本地服务器上使用 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]

相关内容