Handleiding:Korte URL/Apache
Delen van deze pagina (gerelateerd aan Apache2 configuration instructions) zijn verouderd. |
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-uitgiftesystemctl reload httpd.service
. Deze opdrachten moeten worden uitgevoerd als root, meestal door ze te prefixen metsudo ...
.
Waar .htaccess neer te zetten
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.
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]
?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]
/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]
^/?
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.%{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.RewriteEngine
toe te voegen:Options +FollowSymLinks
[L]
in [PT,L]
) om het verzoek door te sturen naar de volgende handler - mod_alias, die het verzoek correct zal doorverwijzen, zoals Stack OverflowLocalSettings.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