Manual:Short URL/Apache/zh

这些教程帮助您为 Apache 配置短 URL. LiteSpeed 服务器软件与 Apache 兼容，可以用完全相同的方式来配置. 关于短 URL 是什么或获取对于其他服务器的配置教程，请看. 如果你使用一些网络寄存服务因此不知道你在使用什么服务器软件，你的主机很有可能在使用 Apache.

计划
开始之前，你需要决定你的虚拟"短链接"的路径.

在本说明中，我们假设使用如下格式，记住在应用到你自己的部署中，他们可能会不同.


 * MediaWiki的安装目录在：
 * 使用的短链接格式是：

下面的说明已被写入到一个自动向导中（需要MediaWiki1.17或更高版本）：


 * shorturls.redwerks.org

如果您只是想快速配置您的wiki，或者您发现该指南令人困惑，那么您可能需要先尝试该工具. 在做这件事之前，请先编辑/创建 .htaccess 文件. If you create it anew, please read on to further in this article about where to place the .htaccess file, and please note that this file will likely be in a different folder than the other file that will need to be edited (LocalSettings.php), which is in the installation folder (/w if you have followed the MediaWiki recommendations). 但是，请注意，在有防火墙/私人的 wiki 上，它不能工作. 如果你的 wiki 是私人的，你仍可以将  设成   把你的 wiki 暂时公开，来尝试配置. 记得在完成之后把它改回.

否则，请继续.

找到正确的文件
在Apache中设置短链接的推荐方法是编辑Apache配置文件. 这要求您可以访问服务器配置. 如果您在共享主机上，则很可能受到限制，并且需要使用 文件. Using  files is less efficient and doesn't give you as much control when it comes to fancy setups with multiple domains but they are powerful enough to set up most short url configurations. LiteSpeed用户应该使用 方法.

使用以下两个部分之一中的说明，具体取决于您是否具有root访问权限或需要使用.

找到Apache配置文件（root访问权限）
The correct configuration file to edit for root configurations may be in one of a number of places.

The correct config file to edit is the one in  where the configuration for your wiki has been setup.

Most linux distributions setup Apache with set of  and   folders setup. If you haven't set one up and are using the default  for your wiki setup then you can edit.

Don't forget to enable overrides by  in. It is disabled by default in Ubuntu 12.04 and Ubuntu 12.10.

If your distribution does not have those directories, then you should edit the Apache configuration file directly. This file should be at. Note that it used to be named, if you have a   and no   then   is the one you want to edit.

If your Apache config isn't in any of these spots you should consult the documentation for whatever system you used to install Apache, and find the location of the Apache configuration file.

If you're on a shared host without access to Apache config files you'll have to use a .htaccess file instead.

In an Apache config file you will likely have a VirtualHost block containing your wiki. If you do have one then that is the location where your rewrite rules will go. RewriteRule config does not inherit so don't put these config options in the global config if you are using a VirtualHost.

After you've setup the config as above inside Apache you're going to need to restart Apache to make it apply the new config.


 * If you are using Plesk or cPanel it should have a method of restarting the server.
 * From the command line the command is usually something like,  ,   or as on the latest Fedora releases  . These commands need to be run as root, usually by prefixing them with.

Where to put .htaccess
If you're using a  file you'll need to edit or create the file. Find the path that contains both your script path and your virtual path. Usually this means the top directory of your site, but let's look at a few examples:

Note that if you want to make a redirect from the main domain to your wiki's Main Page (e.g. http://example.org/ http://example.org/wiki/Main_Page ). Then you always have to set up the .htaccess file in the top level, even if the other directories are nested deeper.

Setting up the rewrite rules
It's easier to understand the rest of this section after a glimpse at the Apache syntax, but this synopsis is not a substitute for the full Apache documentation:

The  directive defines a condition that must be true before a RewriteRule that follows it may be applied. One or more RewriteCond directives may precede a RewriteRule directive, and all the RewriteCond directives that precede a RewriteRule must be true before that rule may be applied to a URI. In the examples that follow,  takes the form of a reference to server variables, e.g.  . Although many   exist, the examples that follow use   (true when TestString is a regular file) and   (true when TestString is a directory), and they are preceded by a negation symbol,.

The  directive may be invoked in both the   file and in any   file, but when the rewrite rule appears in .htaccess files, the implicit per-directory context affects the rule's   because rules are relative to the current directory. In  files, Patterns are not relative to the complete, original URI. For  files, Patterns should never start with a forward slash, , because the URI sub-string will never begin with a. The examples that follow use the  flag whose meaning is Stop the rewriting process immediately, and don't apply any more rules.

The first rule you'll need inside of your config is one to enable the rewrite engine:

Now we need a rule to make your article path a virtual path pointing to index.php. Be sure to replace  and   with the paths you choose in the beginning (if different).

If you are using a root url instead of a normal short url you will need to use the following instead (to ensure that existing files and directories are not seen as article, e.g. " " " " etc.):

Sometimes, the above example doesn't work. The following (you can't set this in a, you need root access for this!) might work instead:

Optionally, you can include a rule to show the Main Page on the path itself, to simplify navigation when people visit urls without a page title specified:

The end result should look something like this:

or, if you used the way with the "Alias" statement:

LocalSettings.php
We need to make the following configurations in :

If you get an "Internal error" page saying "Redirect loop detected!" after you finish configuration you may be using something other than mod_php. If so you need to explicitly turn on short urls using the following line in your LocalSettings.php:

If there is still an "internal error" check the log files of your server. Maybe you have to turn on  module.

Simple instructions
The following is a summary of what to do if you are not doing anything different than what MediaWiki recommends. If you want to do something else, you need to read all of the details above.


 * https://example.com/wiki/Main_Page (url location)
 * /home/me/public_html/mediawiki/w/index.html (index.html location)
 * /home/me/public_html/mediawiki/.htaccess (.htaccess location)

Notice that the .htaccess file is NOT located in the "w" directory, but it is located in the directory above it.