Permalinks gebruiken

Permalinks zijn de permanente URLs voor uw individuele weblog berichten, maar ook voor uw categorieën en andere lijsten. Een permalink is wat een andere weblogger gebruikt om te linken naar uw artikel, of een link die je mogelijk in een e-mail meestuurt. De URL voor elk bericht moet permanent zijn, en ook nooit veranderen. vandaar de naam permalink.

Permalink types

er zijn drie standaard types van WordPress permalinks:

standaard: “lelijk”

de standaard lijkt op

http://example.com/?p=N

waar N staat voor de Post ID. Dit werkt op alle servers, maar ziet er niet zo mooi uit als de andere opties.

Mod_rewrite: “Mooie permalinks”

Door mod_rewrite of lighttpd te gebruiken kunt u mooiere permalinks maken. Er zijn verschillende soorten, maar de meest voorkomende permalink lijkt op

http://example.com/2016/bericht-naam/

of

http://example.com/2016/12/30/bericht-naam

Mooie permalinks zijn mogelijk in:

PATHINFO: “bijna mooi”

PATHINFO permalinks lijken erg op links als die van mod_rewrite, met één uitzondering: ze hebben /index.php staan voor de permalink. voorbeeld:

http://example.com/index.php/yyyy/mm/dd/bericht-naam/

Verder zijn ze precies hetzelfde als de “mooie” permalinks van mod_rewrite, en zijn net zo flexibel. Alles dat mod_rewrite permalinks kunnen doen, kunnen PATHINFO links ook.

Er is een handige plugin die aangeft welk type permalink gebruikt word en gedetailleerde informatie geeft over de interne “rewrite rules” die door wordpress gebruikt worden.

Uw permalink structuur kiezen

in het instellingen -> permalink paneel kunt u een standaard permalink structuur kiezen, of uw eigen permalink aanmaken in het invoerveld “aangepaste structuur”.

let op: Gebruik niet uw pagina url in het permalink veld. Gebruik alleen de structuur tags, of een combinatie daarvan.

Om PATHINFO te activeren, moet u uw permalink structuur beginnen met /index.php

structuur tags

let op: Gebruik niet uw pagina url in het permalink veld. Gebruik alleen de structuur tags, of een combinatie daarvan.

Zorg dat uw structuur eindigd met %post_id% of %postname% zodat elke permalink verwijst naar een ander bericht.

%year%

De jaar van uw bericht, in 4 cijfers. bijvoorbeeld 2003.

%monthnum%

Maand van het jaar, bijvoorbeeld 05

%day%

Dag van de maand, bijvoorbeeld 28

%hour%

Uur van de dag, bijvoorbeeld 15

%minute%

Minuut van het uur, bijvoorbeeld 43

%second%

Seconde van de minuut, bijvoorbeeld 33

%post_id%

Het unieke ID van een bericht, bijvoorbeeld 423

%postname%

Een opgeschoonde versie van de titel van de post (post slug veld bij bewerk bericht/pagina). “Dit Bericht Is Super!” wordt dan bijvoorbeeld dit-bericht-is-super in de URL.

%category%

Een opgeschoonde versie van de categorie naam (category slug veld bij nieuwe categorie/categorie bewerken). sub-categorieën lijken op onderliggende mappen in de URL

%author%

Een opgeschoonde versie van de naam van de auteur.

category base en tag base

de Category base en  Tag base zijn prefixes die worden gebruikt in de URL foor cateorie en tag archieven, en lijken hierop:

example.net/wp/category_base/category_naam
example.net/wp/tag_base/tag_naam

De standaard waarden hiervoor zijn category en tag. U kunt deze veranderen, maar niet weglaten.

Aangepaste permalinks werken op de meeste systemen zonder problemen, maar er zijn scenario’s waar problemen kunnen ontstaan.

%category% gebruiken met berichten in meerdere categorieën

Als u meerdere categorieën geeft aan een bericht, kan er maar één in de permalink verschijnen. De categorieën worden op alfabetische volgorde geordend. Dit geld ook voor sub-categorieën. Het bericht is nog gewoon te vinden via alle aangevinkte categorieën zoals normaal.

Probeer de WP Category Permalink plugin als u zelf wilt kiezen welke categorie wordt gebruikt in de permalink.

“Mooie” permalinks gebruiken

Benodigd:

  • Apache web server met de mod_rewrite module geinstalleerd
  • In de WordPress home directory,
    • De FollowSymLinks optie moet aan staan
    • FileInfo directives moeten toegestaan zijn (bijv. AllowOverride FileInfo of AllowOverride All)
    • Een .htaccess bestand (als dit bestand mist, probeert WordPress deze aan te maken wanneer u “Mooie” permalinks activeert)
    • Als u wilt dat WordPress het .htaccess bestand automatisch update, dan moet WordPress schrijftoegang hebben tot het bestand.
  • Voor nginx, een web server gericht op maximale snelheid en laag geheugenverbruik, moet u het volgende location block toevoegen aan het server block:

location / {
           try_files $uri $uri/ /index.php?$args;
}

  • Voor Hiawatha, een webserver met focus op beveiligning, gebruikt u de volgende UrlToolmit rule:

UrlToolkit {
   ToolkitID = wordpress
   RequestURI exists Return
   Match .*\?(.*) Rewrite /index.php?$1
   Match .* Rewrite /index.php
}

  • Mac gebruikers die WordPress lokaal draaien moeten hun httpd.conf bestand bewerken, zodat de AllowOverride regel AllowOverride All leest in de “/Library/WebServer/Documents” map. Voor Mac OS X 10.5.x en hoger staat dit bestand in /private/etc/apache2/users/[uw-naam].conf. anders staat het in /etc/httpd/httpd.conf.

Als u een “mooie” permalink structuur maakt of update, genereert wordpress rewrite rules en probeert deze in uw .htaccess bestand te zetten. Als dit niet lukt, krijgt u de melding: “U moet uw .htacces updaten”, met de juiste code die u achter het einde kunt plakken.

In WordPress 2.0+ versies, Hoeft u dit waarschijnlijk maar één keer te doen, omdat WordPress het herschrijven intern doet. Als u uw WordPress installatie verhuisd, dan zult u dit opnieuw moeten doen.

WordPress gaat goed om met een bestaande .htacces bestand, en verwijdert geen bestaande RewriteRules of andere regels. Als u andere mod_rewrite regels heeft, plaats deze dan voor die van wordpress.

Waar staat mijn .htaccess bestand?

WordPress’s index.php en .htacces bestand moeten samen in dezelfde map staan waar uw URL naar verwijst. Sinds het bestand begint met een punt kan het voorkomen dat het bestand niet zichtbaar is via FTP, tenzij u de instellingen van uw FTP programma aanpast om ook verborgen bestanden te laten zien. Sommige hosts geven geen permissies voor het bewerken van uw .htaccess bestand als u WordPress installeerd via app installaties.

.htacces aanmaken en bewerken

Als u nog geen .htaccess bestand heeft, dan moet u die aanmaken. Als u shell of SSH toegang heeft naar uw server, kunt u het commando touch .htacces gebruiken om er eentje aan te maken. Als u FTP gebruikt om bestanden over te zetten, dan kunt u op uw computer een bestand aanmaken met de naam 1.htaccess. Upload deze naar de root van uw WordPress map, en hernoem het bestand naar .htaccess.

U kunt het .htaccess bestand aanpassen via FTP, shell, en (indien mogelijk) het control panel van uw host.

De volgende permalink rewrite code moet in uw .htaccess bestand staan (sinds WordPress 3.0):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Als uw .htaccess bestand fouten bevat die uw site offline halen (“Internal Server Error (500)”), dan moet u uw FTP of uw host’s control panel gebruiken om het .htaccess bestand te verwijderen.

.htaccess automatisch updaten

Als WordPress .htaccess niet automatisch kan updaten, dan krijgt u een melding die lijkt op “Als uw .htaccess bestand schrijfbaar was, konden we dit automatisch doen, maar dat is het niet” onderaan uw scherm in het instellingen-> Permalink paneel.

Als u wilt dat WordPress dit kan, dan moet u WordPress schrijftoegang geven tot het .htacces bestand. De exacte permissies hangen af van uw server. Probeer de permissies toe te voegen voor de eigenaar, daarna groep, daarna wereld, en test ze na elke aanpassing. Wanneer WordPress het bestand succesvol heeft aan kunnen passen, moet u niet verder gaan met het aanpassen van permissies.

Na het toepassen van de permalinks, moet u de permissies aanpassen naar een strictere instelling als 660 of 664 om te voorkomen dat anderen per ongeluk toegang hebben tot het bestand.

Permalinks zonder mod_rewrite

“Mooie” permalinks vereisen normaliter mod_rewrite, en IIS (standaard op Windows servers) heeft geen ondersteuning voor mod_rewrite. (Als u Apache gebruikt op windows, werkt mod_rewrite wel, mits deze module aan is gezet in apache\conf\httpd.conf)

Als u IIS 7 gebruikt en administrator rechten heeft op de server, dan kunt u Microsoft’s URL Rewrite Module gebruiken. Desondanks dat het mod_rewrite niet helemaal ondersteund, werkt het prima met WordPress permalinks. Wanneer geïnstalleerd opent u het web.config bestand in de WordPress map en voegt u de volgende regels toe aan het system.webServer element:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”WordPress Rule” stopProcessing=”true”>
<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” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Er is een volledige installatie gids beschikbaar op de IIS site. De module is beschikbaar voor x64 en x86 systemen.

Als dit geen optie is, dan kunt u PATHINFO permalinks proberen; stop index.php/ voor uw permalink structuur:

/index.php/%year%/%monthnum%/%day%/%postname%/

Deze optie werkt niet altijd, met name in gevallen met WordPress op een IIS 6 server. Om deze optie werkend te krijgen op een IIS server moet u de volgende regels toevoegen aan een php.ini bestand en opslaan in uw root map:

cgi.fix_pathinfo = 1
cgi.force_redirect = 0

Een andere optie is om gebruik te maken van IIS’ aangepaste 404 redirects. Hiervoor moet uw host wel aangepaste 404 redirects toestaan, maar u hoeft er geen 3rd party mod_rewrite software te gebruiken en u hoeft een index.php/ aan uw permalink structuur toe te voegen. Deze website legt uit hoe u dat kunt doen: Permalinks op IIS zonder ISAPI plugin.

Permalink problemen oplossen

.htaccess genereer problemen oplossen

Als uw WordPress installatie niet automatisch een .htaccess bestand genereerd, of geen nieuwe regels toevoegd aan uw bestaande .htaccess bestand, dan kunnen er meerdere redenen zijn die naar dit probleem kunnen leiden. Probeer deze oplossingen stap voor stap en ga door naar de volgende als de huidige stap niet werkt.

  • Verander bestand permissies: u moet chmod gebruiken om de permissies van uw .htaccess aan te passen naar 666 om het bestand aan te kunnen passen met de WordPress template editor. Dit wordt afgeraden, omdat iedere gebruiker op uw blog die templates aan kan passen dan ook uw .htaccess aan kan passen. U kunt de permissies aanpassen naar 660 om het server-writable te maken, waardoor de limitatie weer terug komt.
  • Gebruikers van XAMPP(Windows): Sommige versies van XAMPP hebben standaard mod_rewrite niet aanstaan (ookal is het gebasseerd op apache). Om het aan te zetten moet u het bestand apache/conf/httpd.conf openen, en het hekje weghalen voor de regel LoadModule rewrite_module modules/mod_rewrite.so.
  • Gebruikers van WAMP: Sommige versies van WAMP (alle versies?) hebben standaard mod_rewrite niet aanstaan, of staan geen SymLinks toe. Om deze benodigde functie aan te zetten, gaat u naar bin/apache/apache[versie]/conf/ en opent u het bestand httpd.conf met een teksteditor en haalt u het hekje weg voor de regel LoadModule rewrite_module modules/mod_rewrite.so. Dan zoekt u de regel <Directory “c:/wamp/www/”>. tussen <Directory “c:/wamp/www/”> en </Directory> staat een regel met de tekst AllowOverride none. verander dit naar AllowOverride all. Sla het bestand op en herstart WAMP. Uw permalinks zouden nu moeten werken.

Permalinks, .htaccess, en MS frontpage

Een notitie over microsoft FrontPage: Veel servers, gemaakt door hosting bedrijven, bevatten mod_frontpage, gecompileerd met apache, en in veel gevallen met de Frontpage Extensies geinstalleerd, op elke virtual host. Dit komt vaak voor. Sommige servers gebruiken zowel mod_frontpage en de server extensies. Zelfs als u geen Frontpage gebruikt, kan u een error 500 of leeg scherm krijgen als u uw WordPress installatie wilt bekijken. Dit komt door de manier van interactie tussen de extensie en apache.

WordPress functioneert met de Frontpage extensies, op de permalinks na. Als u wijzigingen maakt in de instellingen van de permalinks kan dit corruptie veroorzaken in de Frontpage extensie. Er is momenteel een oplossing voor.

Quick fixes, frontpage of permalinks

Frontpage Extensie fix: Als u niks geeft om de permalinks en de MS Frontpage server extensie weer werkend wilt hebben, bewerkt u uw .htaccess bestand en haalt u de rewrite rules van WordPress eruit.

Permalinks gebruiken: als u niks geeft om Frontpage (maar uw hosting heeft het geinstalleerd)

U (of uw hosting bedrijf) moet de Frontpage extentie van de server verwijderen, of de .htaccess aanpassen en alle Frontpage regels eruit halen.

Frontpage en permalinks tegelijk gebruiken

Er waren verschillende topics op het support forum voor dit probleem, en geen oplossing. tot nu.

Normaliter werkt WordPress prima op een unix server en kunt u gewoon berichten plaatsen en bewerken, met Microsoft Frontpage. Totdat u een wijziging maakt aan de permalinks (bijvoorbeeld een link op basis van datum).

Het probleem is dat Frontpage het .htaccess bestand gebruikt (die door WordPress mod_rewrite wordt gebruikt) voor de “publishing” en “web authoring” configuratie. Wanneer de mod_rewrite code van WordPress toegevoegd wordt aan dat bestand, gebeuren er twee dingen. De permalinks werken niet, en de Frontpage Server extensies raken corrupt.

De oplossing is simpel.

Als u Frontpage gebruikt of wilt gebruiken in combinatie met wordpress, moet u deze simpele stappen volgen, of uw hosting bedrijf dit laten doen.

Microsoft FrontPage genereert de volgende map:

_vti_bin

met daarbinnen in

_vti_adm

en

_vti_aut

Naast het .htaccess bestand in uw root map, staan er ook .htaccess bestanden in deze drie mapen.

In al deze .htaccess bestanden, voegt u helemaal bovenaan de volgende regel toe:

Options +FollowSymlinks

Het kan zijn dat er al een regel bestaat als

Options None

Bewerk elk .htacces bestand en sla ze op. Nu werkt zowel Frontpage als WordPress.

Lange permalinks

Wanneer u lange permalinks gebruikt in emails, reacties en chats, kunnen lange permalinks “afgehakt” worden, of een deel word herkend als tekst. hier is een voorbeeld:

http://yourdomain.example.com/2005/10/4/artikel-over-joe-fred-sally-en-bog

kan resulteren in

http://yourdomain.example.com/2005/10/4/article-about-joe-fred-sally-and-bog

Als de ontvanger op de onderste link klikt, krijgt hij/zij een Error 404 Page not found. Als u de neiging heeft om lange permalinks te gebruiken, kunt u deze stappen volgen om dit probleem te voorkomen.

  1. controleer dat u ook echt permalinks gebruikt
  2. bewerk uw .htaccess bestand en volg het volgende aan toe:RewriteRule ^post/([0-9]+)?/?([0-9]+)?/?$ /index.php?p=$1&page=$2 [QSA]
  3. Test het. Zoek een bericht ID en typ het volgende (met uw informatie) in uw browser. Als alles werkt wordt u doorverwezen naar uw bericht. http://yourdomain.example.com/post/(the ID #)

Het is handig om te weten dat niet alle email software de URL korter maakt als er brackets (< en >) om de URL staan. Als u een URL in uw email plakt, schrijf hem dan zo:

Lees mijn blog bericht op: <http://yourdomain.example.com/2005/10/4/artikel-over-joe-fred-sally-en-bog>

Ook bieden sommige mail programma’s een “preformat” optie wanneer u emails schrijft in pure tekst. Met deze “preformat” optie stopt uw mail programma geen harde enter in uw link.

Andere problemen oplossen

Als uw .htaccess goed gegenereerd wordt, maar permalinks werken nog steeds niet, dan kunnen er verschillende oorzaken zijn die hiertoe leiden. Mochten onderstaande opties niet werken, dan kunt u hulp zoeken in de ‘How To’ sectie op het WordPress forum.

AllowOverride uitgeschakeld

De optie AllowOverride kan uitgeschakeld zijn op uw server. Als de AllowOverride optie op none staat in uw httpd.conf bestand, dan word .htaccess compleet genegeerd. In dit geval probeert uw server niet eens het .htaccess bestand te lezen. Als u de optie op All zet, leest de server het .htaccess bestand wel. Een voorbeeld van ingeschakelde AllowOverride in httpd.conf:

<Directory />
   Options FollowSymLinks
   AllowOverride All
</Directory>

Het kan zijn dat u AllowOverride aan moet zetten in uw “Document root”:

<Directory /var/www/html>
   # … other directives…
   AllowOverride All
</Directory>

Het kan zijn dat u dit ook moet doen voor de site. Dit is sowieso het geval op Mac OS X Server, maar vrij weinig het geval op andere systemen. U kunt de configuratie bestanden vinden in /etc/httpd/sites/

Om deze wijzigingen door te voeren moet u apache opnieuw starten na het bewerken van uw httpd.conf bestand.

Navigeren naar andere berichten of pagina’s werkt niet

Soms werkt navigeren naar een tweede bericht of pagina niet naar behoren. Uw pagina genereert dan een link die lijkt op een van deze URL’s:

http://www.example.com/page/2/
http://www.example.name/category/categoryname/page/2/
http://www.example/year/month/day/page/2/
http://www.example/year/month/page/2/

Het gevolg is dat de pagina laad met alle delen (header, footer, sidebar), maar in plaats van een pagina of bericht, krijgt u een foutmelding met de tekst: “Sorry, geen berichten gevonden met deze zoek criteria”.

Dit komt door een glitch in het .htaccess bestand dat wordpress genereert. Om dit op te lossen, moet u de inhoud van uw .htaccess bestand verwijderen en opnieuw genereren,

  1. Log in op uw host via FTP, SSH of open de file manager in het online control panel van uw host.
  2. Ga naar de home directory, en zoek voor het bestand .htaccess. Sommige FTP clients of online filemanagers verbergen bestanden die beginnen met een punt. Pas dit in de instellingen aan.
  3. Download uw .htaccess bestand en open het met een tekstverwerker als kladblok. Selecteer alles en verwijder het.
  4. Sla uw .htacces bestand op en upload het bestand terug naar de server.
  5. Ga naar uw admin panel van WordPress en ga naar instellingen -> permalinks, en kies uw permalink structuur.

Zorg dat de WordPress installatie genoeg permissies heeft om een .htaccess bestand aan te maken. Als u bovenstaande stappen hebt doorlopen, en het probleem blijft bestaan, kijk dan op het support forum.

Permalinks naar pagina’s werken niet

Als u naar een pas gegenereerde pagina navigeert en tegen een foutmelding aanloopt, dan moet u waarschijnlijk uw permalink structuur updaten. Onthoud dat elke keer dat u een statische pagina toevoegd, nieuwe regels genegereerd moeten worden en toegevoegd aan het .htaccess bestand (WordPress 1.X) of moeten worden toegevoed in de interne rewrite array (WordPress 2.X).

Permalink naar Ultimate Tag Warrior tag pagina’s werken niet

Als u 404 fouten krijgt op lokale tag pagina’s bij het gebruik van de UltimateTagWarrior plugin op WordPress 2.X, dan komt dat doordat de door WordPress gegenereerde regels in het .htaccess bestand voorrang krijgen op die van UTW, waardoor deze niet worden gelezen. Dit gebeurt voornamelijk als u een aangepaste permalink structuur heeft. Om dit op te lossen, moet u uw permalink structuur op “datum en naam” zetten, of de UTW zó aanpassen dat de regels bovenaan het .htaccess bestand worden weggeschreven.

Permalinks werken, maar geen pagina’s worden weergegeven

Sommige versies van PHP 4.4.X en 5.X hebben een bug waardoor mod_rewrite niet werkt in combinatie met Apache 2.x. Meer details zijn te vinden op http://bugs.php.net/bug.php?id=35096 en http://bugs.php.net/bug.php?id=35059.

Meer hulp

Als deze stappen niet werken, kunt u naar u probleem zoeken in de Codex, Probleem oplosser of op het Support Forum. Als laatste redmiddel kunt u een Bug Report aanmaken.

Tips en trucs

Voorkom links die als archief worden gezien

Ook al plaatst u waarschijnlijk maar hooguit één bericht per dag, met gebruikt van de permalink structuur %year%%monthnum%%day%, word die pagina gezien als archief. Om individuele links te geven aan berichten, moet u op zijn minst %year%%monthnum%%day%%hour% gebruiken.

Permalink structuur controleren

een manier om de permalink structuur te controleren is:

<?php if ( get_option(‘permalink_structure’) ) { echo ‘permalinks enabled’; } ?>