Handleiding:Korte URL/Apache

This page is a translated version of the page Manual:Short URL/Apache and the translation is 100% complete.
Wikipedia's korte URL's.

Deze instructies helpen bij het instellen van korte URL's op Apache. De LiteSpeed webserver is compatibel met Apache en kan op ongeveer dezelfde manier worden geconfigureerd. Voor informatie over wat korte URL's zijn of om instructies te krijgen over configuratie voor andere servers zie Handleiding:Korte URL . Als u niet weet welke webserver u gebruikt omdat u een soort webhostingdienst gebruikt, is het heel waarschijnlijk dat uw host Apache gebruikt.

Instellen

Voordat u begint, moet u beslissen over de naam van uw virtuele "korte url" pad.

In deze handleiding zullen we het volgende aanbevelen/aannemen. Vergeet niet om uw eigen paden te gebruiken als ze anders zijn.

  • De map van MediaWiki is : /w
  • Het gewenste korte url-formaat is: /wiki/Page_title

Server configuratie

Het juiste bestand vinden

De aanbevolen manier om korte URL's in Apache op te zetten is door de Apache configuratie-bestanden te bewerken. Hiervoor moet u toegang hebben tot de serverconfiguratie. Als uw site op een gedeelde host zit, heeft u waarschijnlijk geen toegang en moet u in plaats daarvan een bestand .htaccess gebruiken. Het gebruik van .htaccess bestanden is minder efficiënt en geeft u niet zoveel controle als het gaat om fancy instellingen met meerdere domeinen, maar ze zijn krachtig genoeg om de meeste korte url configuraties op te zetten. Gebruikers van LiteSpeed moeten de methode .htaccess gebruiken.

Gebruik de instructies in één van de volgende twee secties, afhankelijk van of u root-toegang heeft of .htaccess nodig hebt.

Zoek het Apache-configuratiebestand (root-toegang)

Het juiste configuratie-bestand om te bewerken voor root-configuraties kan op een aantal plaatsen staan.

Het juiste bestand om te bewerken is dat in /etc/apache2/sites-available/ waar de configuratie voor uw wiki is ingesteld. De meeste Linux-distributies stellen Apache in met aantal sites-available/ en sites-enabled/ mappen.

Als u er nog geen heeft ingesteld en de standaard /var/www gebruikt voor uw wiki-instelling, kunt u /etc/apache2/sites-available/default bewerken.

Vergeet niet om overrides door AllowOverride All in /etc/apache2/apache2.conf in te schakelen. Het is standaard uitgeschakeld in Ubuntu 12.04 en Ubuntu 12.10.

Als uw distributie geen van deze mappen heeft, moet u het Apache-configuratiebestand direct bewerken. Dit bestand moet op /etc/apache2/apache2.conf staan. Let op dat het vroeger httpd.conf heette, als u een httpd.conf heeft en geen apache2.conf hebt dan is httpd.conf degene die u moet bewerken.

Als uw Apache-config niet op deze plekken staat, moet u de documentatie raadplegen voor het systeem dat u gebruikt heeft om Apache te installeren om de locatie van het Apache-configuratie-bestand te vinden.

Als uw site op een gedeelde host staat zonder toegang tot de Apache configuratie-bestanden moet u in plaats daarvan een .htaccess-bestand gebruiken.

In een Apache-configuratie-bestand heeft u waarschijnlijk een VirtualHost-blok dat uw wiki bevat. Als u er een heeft, dan is dat de locatie waar uw rewrite rules naartoe gaan. RewriteRule configuratie erft niet dus zet deze opties niet in de globale configuratie als een VirtualHost gebruikt.

Nadat u de configuratie heeft ingesteld zoals hierboven in Apache, moet u Apache opnieuw starten om de nieuwe configuratie toe te passen.

  • Als u Plesk of cPanel gebruikt, moet er een methode zijn om de server opnieuw te starten.
  • Vanaf de commandoregel is het commando meestal iets als apache2ctl graceful, apachectl graceful, /etc/init.d/apache2 restart of zoals op de nieuwste Fedora-uitgifte systemctl reload httpd.service. Deze opdrachten moeten worden uitgevoerd als root, meestal door ze te prefixen met sudo ....

Waar .htaccess neer te zetten

Op Apache bepaalt de AllowOverride of .htaccess-bestanden de serverconfiguratie mogen beheren. Als deze rewrite-regels helemaal niets doen, moet u mogelijk de instelling AllowOverride in de Apache-configuratie wijzigen om FileInfo op te nemen. Het vereist ook Options FollowSymLinks voor de map.

Als u een bestand .htaccess gebruikt, moet u het bestand bewerken of maken. Zoek het pad dat zowel uw scriptpad als uw virtuele pad bevat. Meestal betekent dit de bovenste map van uw site, maar laten we een paar voorbeelden bekijken:

wgScript Voorbeeld wgArticlePath Voorbeeld .htaccess locatie
/w/index.php https://www.mediawiki.org/w/index.php?... /wiki/Page_title https://www.mediawiki.org/wiki/Manual:Short_URL /.htaccess
/w/index.php https://www.mediawiki.org/w/index.php?... /Page_title https://www.mediawiki.org/Manual:Short_URL /.htaccess
/mediawiki/index.php https://www.mediawiki.org/mediawiki/index.php?... /view/Article https://www.mediawiki.org/view/Manual:Short_URL /.htaccess
/mysite/mw/index.php https://www.mediawiki.org/mysite/mw/index.php?... /mysite/view/Page_title https://www.mediawiki.org/mysite/view/Manual:Short_URL /mysite/.htaccess

Let op dat als u een doorverwijzing van het hoofddomein naar de hoofdpagina van uw wiki wilt maken (bijvoorbeeld http://example.org/ → http://example.org/wiki/Main_Page). Dan moet u altijd het bestand .htaccess opzetten op het hoogste niveau, zelfs als de andere mappen dieper zijn.

De rewrite-regels instellen

Het is gemakkelijker om de rest van deze sectie te begrijpen na het bekijken van de Apache-syntaxis, maar deze synopsis is geen vervanging voor de volledige Apache-documentatie:

RewriteCond TestString CondPattern
RewriteRule Pattern Substitution [flags]

De directive RewriteCond bepaalt een voorwaarde die waar moet zijn voordat een navolgende RewriteRule kan worden toegepast. Een of meer RewriteCond-directives kunnen een RewriteRule-directive voorafgaan en alle RewriteCond-directives die een RewritRule voorafgaan moeten geldig zijn voordat deze regel op een URI kan worden toegepast. In de volgende voorbeelden neemt TestString de vorm van een referentie naar servervariabelen, bijvoorbeeld %{ NAME_OF_VARIABLE }. Hoewel er veel CondPatterns bestaan, gebruiken de volgende voorbeelden -f (waar wanneer TestString een normaal bestand is) en -d (waar wanneer testString een map is), en worden voorafgegaan door een negatie symbool, !.

De directive RewriteRule kan zowel in het bestand httpd.conf als in elk bestand .htaccess worden aangeroepen, maar wanneer de Rewrite-regel wordt weergegeven in .htaccess-bestanden, is de impliciete context per map van invloed op het Pattern van de regel, omdat regels relatief zijn ten opzichte van de huidige map. In .htaccess bestanden zijn patronen niet ten opzichte van de volledige, originele URI. Voor bestanden .htaccess mogen patronen nooit beginnen met een schuine streep naar voren, /, omdat de URI-subtekenreeks nooit begint met een /. In de volgende voorbeelden wordt de vlag L gebruikt die betekenis heeft als Stop het herschrijfproces onmiddellijk en pas geen regels meer toe.

Als u VirtualHosts gebruikt, zorg ervoor dat de instellingen in de VirtualHost-declaratie worden geplaatst

De module mod_rewrite moet worden ingeschakeld op Apache- of LiteSpeed-servers. Voor Apache gebruik het commando sudo a2enmod rewrite gevolgd door sudo systemctl restart apache2.

De eerste regel die u nodig heeft in uw configuratie is één om de rewrite engine in te schakelen:

RewriteEngine On

Nu hebben we een regel nodig om van uw artikelpad een virtueel pad te maken dat naar index.php verwijst. Zorg ervoor dat u /wiki en /w/index.php vervangt door de paden die u in het begin heeft gekozen (indien verschillend).

RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
Als u besluit dit aan te passen, zorg er dan voor dat u nooit ?title=$1 of iets dergelijks opneemt in de rewrite. Het opnemen van een query zal ervoor zorgen dat de ingebouwde afhandeling van MediaWiki wordt overschreven en zal bugs op uw wiki veroorzaken vanwege het feit dat Apache's query-rewrites niet werken.[1] Het doel is om alias paden naar /index.php te maken en MediaWiki zelf te laten zorgen voor het parsen en routeren van de url, op basis van de configuratie in LocalSettings.php.

Als u een root url gebruikt in plaats van een normale korte url, moet u het volgende gebruiken (om ervoor te zorgen dat bestaande bestanden en mappen niet als artikel worden gezien, bijvoorbeeld "/index.php" "/images" enz.):

RewriteCond %{REQUEST_URI} !^/w/rest\.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/w/index.php [L]
Als u een scriptpad en een artikelpad gebruikt die overeenkomen, zoals /mywiki/index.php en /mywiki/Article, moet u ook dezelfde twee RewriteCond-regels gebruiken op uw RewriteRule. Houd er echter rekening mee dat er geen echte geldige reden is om uw wiki op deze manier te configureren. Als uw artikelpad al een submap is, moet u het scriptpad van uw wiki naar een andere map verplaatsen. Zoals /w/index.php en /mywiki/Article of /my/index.php en #artticle3.

Soms werkt het bovenstaande voorbeeld niet. Het volgende (u kunt dit niet in een .htaccess instellen, u heeft daarvoor root toegang nodig!) kan in plaats daarvan werken:

Alias /wiki /path/to/your/webroot/w/index.php

Als optie kunt u een regel omvatten om de hoofdpagina op het pad zelf te laten zien, om de navigatie te vereenvoudigen wanneer mensen url's bezoeken zonder een pagina-titel:

# Doorverwijzen / Naar de hoofdpagina
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

Het eindresultaat zou er ongeveer zo uit moeten zien:

## https://www.mediawiki.org/wiki/Manual:Short_URL/Apache

# De rewrite engine inschakelen
RewriteEngine On

# Korte URL voor wikipagina's
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# Doorverwijzen / Naar de hoofdpagina
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

of, als u de manier gebruikt met een "Alias":

## https://www.mediawiki.org/wiki/Manual:Short_URL/Apache

Alias /wiki /path/to/your/webroot/w/index.php
# De rewrite engine inschakelen
RewriteEngine On

# Doorverwijzen / Naar de hoofdpagina
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
Zorg ervoor dat de volgorde van regels zoals gegeven in het voorbeeld wordt gehandhaafd, d.w.z. "Korte url voor wikipagina's" moet worden gecontroleerd voor "Doorverwijzen / naar hoofdpagina".
De ^/? in de config is belangrijk omdat verschillende Apache-instellingen verschillende reguliere expressies gebruiken. Sommigen willen dat u ^wiki/ gebruikt en sommigen willen, dat u ^/wiki/ gebruikt. De ? in /? laat deze regel in beide contexten werken.
De %{DOCUMENT_ROOT} in de config zorgt ervoor dat Apache het juiste niet-dubbelzinnige pad heeft. Het werkt echter niet op sommige slecht geconfigureerde gratis hosts. Als u 404 of 403 problemen hebt met uw RewriteRules, verwijder dan de delen %{DOCUMENT_ROOT} en probeer het opnieuw.
Als uw SCRIPT_PATH leidt naar een andere fysieke locatie (bekend als "symlink" in Unix, "shortcut" op Windows, "alias" in Mac OS X), moet u Apache mogelijk toestaan deze te volgen. U kunt dit doen door deze regel boven de RewriteEngine toe te voegen:
Options +FollowSymLinks
Als het map naar de map script door de webserver via een alias directive wordt gealiasd, zoals o.a. in Debian, werkt de RewriteRule zolang u de PT-vlag toevoegt (d.w.z. verander [L] in [PT,L]) om het verzoek door te sturen naar de volgende handler - mod_alias, die het verzoek correct zal doorverwijzen, zoals Stack Overflow

LocalSettings.php

We moeten de volgende configuratie in LocalSettings.php maken:

## https://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "/w";        // dit had al op deze manier moeten zijn geconfigureerd.
$wgArticlePath = "/wiki/$1";

Als u een pagina met een "Internal error" krijgt met de tekst "Redirect loop detected!" nadat u de configuratie heeft voltooid, gebruikt u mogelijk iets anders dan mod_php. Als dat het geval is, moet u korte url's expliciet inschakelen met behulp van de volgende regel in uw bestand "LocalSettings.php":

$wgUsePathInfo = true;

Als er nog steeds een "internal error" is, controleer dan de logbestanden van uw server. Misschien moet u de module mod_rewrite aanzetten.

Instructies

Dit is een samenvatting van wat u moet doen als u niets anders doet dan wat MediaWiki aanbeveelt. Als u iets anders wilt doen, moet u alle bovenstaande details lezen.

  • https://example.com/wiki/Main_Page (URL-locatie)
  • /home/me/public_html/mediawiki/w/index.html (index.html locatie)
  • /home/me/public_html/mediawiki/.htaccess (.htaccess locatie)

Merk op dat het bestand .htaccess NIET in de map "w" staat, maar dat het in de map erboven staat.

.htaccess broncode

RewriteEngine On

# hoofdregel van rewrite
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# Doorverwijzen / Naar de hoofdpagina
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

LocalSettings.php broncode

$wgScriptPath = "/w";
$wgArticlePath = "/wiki/$1";

Online Wizard

Het is mogelijk dat deze wizard mensen zal helpen de korte URL's te genereren die ze nodig hebben. (OPMERKING: Dit moet worden getest of deze notitie moet hier worden verwijderd.)

Een geautomatiseerde wizard (MediaWiki 1.17 of later) kan helpen:

Als u gewoon wilt dat de wiki snel wordt geconfigureerd of u de handleiding verwarrend vindt, dan wilt u misschien eerst dat hulpmiddel proberen. Als u dit doet, moet u er rekening mee houden dat u een .htaccess bestand moet bewerken of maken. Als u een bestand aanmaakt, lees dan verder in dit artikel over de plaats van het bestand .htaccess, en houd er rekening mee dat dit bestand waarschijnlijk in een andere map zal staan dan het andere bestand dat bewerkt moet worden (LocalSettings.php), dat zich in de installatie map bevindt (/w als de MediaWiki-aanbevelingen zijn gevolgd). Houd er ook rekening mee dat het gebruik van deze wizard niet werkt met firewalls of private wiki's. In dit geval kunt u het nog steeds proberen door uw wiki tijdelijk openbaar te maken door $wgGroupPermissions['*']['read'] in te stellen op true. Vergeet niet om het terug te zetten naar false als u klaar bent.

Zie ook

Referenties