Manual:Short URL/wiki/Page title -- Windows with IIS7--root access

From MediaWiki.org
Jump to navigation Jump to search

Pretty URLs with Windows IIS7/7.5[edit]

  1. Install IIS URL Rewrite Module
  2. Modify LocalSettings.php
  3. Create a Rewrite/Redirect rule

Install IIS URL Rewrite Module 2.0[edit]

  1. Download appropriate 32bit or 64bit IIS Rewrite Module from Microsoft:
  2. Install on the host server by running the downloaded .msi file

Modify LocalSettings.php[edit]

Edit the appropriate path configurations in your LocalSettings.php file:

  • $wgScriptPath = "/w"; # The directory under your document root where MediaWiki is installed
  • $wgArticlePath = "/wiki/$1"; # This is the rewritten URL
  • $wgUsePathInfo = true;

Create an Inbound and Outbound rule set[edit]

  1. Open Internet Information Services Manager
  2. Select your wiki site from the website list
  3. Open the URL Rewrite Control from the IIS group
  4. Click on "Add Rule(s)..."
  5. Select the "User-Friendly URL" template
  6. Enter http://www.example.com/wiki/index.php?title=Main_Page
  7. Select http://www.example.com/Main_Page from the drop down
    • There IIS Rewrite template doesn't support customizing through this window, we will get to a clean up step
  8. Check both of the following options:
    • Create corresponding redirect rules
    • Create corresponding outbound rewrite rule
  9. Click OK
  10. Open the web.config file that appears in the site root directory
  11. Change the following
    • FROM: <match url="^([^/]+)/?$" />
    • TO: <match url="^(wiki/[^/]+)/?$" />
  • rules based on IIS7.5

Sample Web.Config[edit]

This is a sample web.config file that contains rules based on the above. There is a second entry other then the rules. The httpRedirect handles making sure that any request to: http://www.example.com/ is directed to http://www.example.com/wiki/. This allows mediaWiki to pick up and run with any additional redirects.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect User Friendly URL" enabled="true" stopProcessing="true">
                    <match url="^wiki/index\.php$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                        <add input="{QUERY_STRING}" pattern="^title=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}" appendQueryString="false" />
                </rule>
                <rule name="Rewrite User Friendly URL" enabled="true" stopProcessing="true">
                    <match url="^(wiki/.+)$" /> <!-- or more strict: <match url="^(wiki/[^/]+)/?$" /> -->
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="wiki/index.php?title={R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="Outbound Rewrite User Friendly URL" preCondition="ResponseIsHtml1" enabled="true">
                    <match filterByTags="A, Form, Img" pattern="^(.*/)wiki/index\.php\?title=([^=&amp;]+)$" />
                    <action type="Rewrite" value="{R:1}{R:2}/" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
      <httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Permanent">
        <add wildcard="/" destination="/wiki/" />
      </httpRedirect>
    </system.webServer>
</configuration>

Mediawiki is implemented in short path under windows iis7[edit]

Because I can't speak English, so please see a friend who helps me to translate. Be sure to translate, because the methods provided above cannot be used, at least my local and network tests have failed. If the search function does not match.

And the new method I provided below tested successfully on mediawiki1.25:

Added at the bottom of LocalSettings.php:

 $wgArticlePath = $wgScriptPath . "/$1";

  • Create new web.config and write it inside (web.config requires Url_Rewriter support):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="MediaWiki">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?title={UrlEncode:{R:1}}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
  • If there is an error when uploading a picture after use (I don't have this situation):

 <match url="^(.*)$" />

Change to

 <match url="\.(php|html|gif|jpg|png|css|js)$" ignoreCase="false" />

  • After use: Home page, content page, list page, search function, special page, picture display, etc. are all displayed normally.

Iis UrlRewriter special character link causes 404 error resolution[edit]

For example, I will not publish rules on Wikipedia articles.

If a special symbol such as a + (plus sign) in the URL results in a 404 error, we wrote the solution: % E5%AD%97%E7%AC%A6%E7%9A%84%E9%93%BE%E6%8E%A5%E8%A7%A3%E5%86%B3%E6%96%B9%E6 % B3%95 Iis UrlRewriter special character link solution article.

Everyone can modify their own web.config content to solve this problem.