Na WordPress MU 3.0 update afbeeldingen niet meer zichtbaar

Ben jij webmaster en gebruik je voor je website een WordPress MU (MultiUser) installatie? Dan heb je onlangs gezien dat er een update beschikbaar was naar versie 3.0. Echter is de indeling van deze WordPress versie aardig veranderd under-the-hood. Na het updaten krijg je dan ook de melding:

The wp-content/blogs.php file is deprecated. Please remove it and update your server rewrite rules to use wp-includes/ms-files.php instead.

Echter kan dit nog wel voor problemen zorgen. In eerste instantie denk je misschien: ik verwijder dat bestand blogs.php wel, en dan zal het wel goed zijn. Echter zul je dan al snel merken dat geen enkele afbeelding die je gebruikt op je WordPress website niet meer werkt. En dat heeft er mee te maken dat je vergeten bent om rewrite rule in je .htaccess bestand bent vergeten aan te passen.

Het is heel eenvoudig: een WordPress MU installatie is eigenlijk maar 1 WordPress installatie en alle andere blogs die je aanmaakt, zijn virtueel. De bestandsindeling waarin de afbeeldingen worden opgeslagen op de server wijkt ook totaal af van de (virtuele) bestandsindeling die de bezoeker van de website ziet. Om dus te zorgen dat de afbeeldingen op de juiste manier worden weergegeven is het belangrijk dat het virtuele bestandspad op de juiste manier wordt opgebouwd.

Pas daarom het .htaccess bestand van je WordPress MU 3.0 installatie na de update aan naar het volgende. Eigenlijk hoef je alleen de dikgedrukte regel aan te passen.

RewriteEngine On
RewriteBase BASE/
#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RewriteRule ^(.+)$ $1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . – [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
<IfModule mod_security.c>
<Files async-upload.php>
SecFilterEngine Off
SecFilterScanPOST Off
</Files>
</IfModule>

RewriteEngine OnRewriteBase BASE/
#uploaded filesRewriteRule ^(.*/)?files/$ index.php [L]RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]
# add a trailing slash to /wp-adminRewriteCond %{REQUEST_URI} ^.*/wp-admin$RewriteRule ^(.+)$ $1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule . – [L]RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]RewriteRule . index.php [L]
<IfModule mod_security.c><Files async-upload.php>SecFilterEngine OffSecFilterScanPOST Off</Files></IfModule>

Daarmee zijn alle problemen na de update naar WordPress MU 3.0 opgelost en zul je alle afbeeldingen weer moeten zien.

Heb jij ook problemen gehad? Is het hiermee opgelost? Of heb je nog aanvullende tips of hulp nodig? Laat hieronder een bericht voor me achter!

Dit artikel delen:

.htaccess redirect voor URL met vraagteken (?)

Wanneer een pagina van een website verplaatst wordt en daardoor via een andere URL te benaderen is, moet de oude URL doorverwijzen naar de nieuwe URL om er voor te zorgen dat bezoekers deze pagina nog steeds kunnen vinden. Ook voor de zoekmachines is het goed om de URL door te verwijzen, want wanneer dit met een 301 verwijzing wordt gedaan, wordt de waarde die was toegekend aan de oude pagina overgegeven aan de nieuwe pagina.

Een redirect van een URL kan geregeld worden met een .htaccess (op linux servers). Een voorbeeld van een .htaccess die paginaA.html doorverwijst naar paginaB.html is:

RewriteEngine On
RewriteRule ^paginaA\.html$ /paginaB\.html [L,R=301]

Echter kan het ook voorkomen dat de URL die je wilt doorverwijzen iets complexer is en een variabele bevat. Een voorbeeld van zo’n URL is: paginaA.html?code=15

Het probleem hierbij wordt dat het gebruik van een vraagteken in een .htaccess bestand zorgt dat het gelezen wordt als een Query String. Dit is zelfs niet te voorkomen door een back-slash ( \ ). Daarom moeten we in dit geval een andere oplossing bedenken.

De juiste doorverwijzing met een .htaccess is in dit geval als volgt:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^code=15$
RewriteRule ^paginaA\.html$ /paginaB\.html?code=15 [L,R=301]

Je bekijkt dus eerst of de Query String (hetgeen achter het vraagteken) gelijk is aan ‘code=15’. Als dat het geval is leid je elke URL die begint met paginaA.html om naar paginaB.html?code=15

Dit artikel delen: