Problem med underkataloger i WordPress (404-fel)
Nu i veckan lade jag till en egen funktion för att lista svenska artikelkataloger och länkkataloger med aktuell PageRank för respektive sida.
Jag använder WordPress som plattform, men denna listfunktion är inte någon del av WordPress utan en egen ”funktion” som jag skrivit, vilket innebar att jag var tvungen att skapa egna fysiska filer. Jag har skapat en fysisk fil för respektive lista och lagt dessa i varsin underkatalog, svenska-artikelkataloger och svenska-lankkataloger.
Dessa två underkataloger existerar sålunda på riktigt och är inte några virtuella kataloger som exempelvis ”https://www.spix.nu/sokmotoroptimering/”.
Att använda underkataloger i WordPress visade sig dock inte vara så lyckat och jag upptäckte det när jag skulle testa funktionen för knappen Google +1 för respektive sida. Funktionen fungerade inte och när jag sedan försökte lägga till dessa adresser – ”https://www.spix.nu/svenska-artikelkataloger/” och ”https://www.spix.nu/svenska-lankkataloger/” – i Googles Verktyg för Webbansvariga, så fungerade det inte och Google rapporterade ett 404-fel, alltså att sidan inte kunde hittas.
Men när jag besökte respektive adress med min webbläsare, så fungerade det alldeles utmärkt och jag kunde – och kan fortfarande – inte för mitt liv begripa varför dessa adresser skulle rapportera ett 404-fel.
Jag har en .htaccess-fil som skapats av WordPress och efter en hel del läsande och testande, så kan jag fortfarande inte begripa varför adresserna inte fungerar.
Min .htaccess-fil ser ut som följer:
# 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
Raden RewriteCond %{REQUEST_FILENAME} !-d betyder att regeln inte ska tillämpas på fysiska kataloger som faktiskt existerar, men uppenbarligen fungerar inte detta och jag har suttit flera timmar och slitit mitt hår utan att hitta någon lösning.
Parametern -d betyder directory, alltså katalog och !-tecknet betyder ”Not” och villkoret betyder sålunda något i stil med: Aktivera omskrivningsregeln om adressen inte är en fysiskt existerande katalog eller om man vill vända på det; Aktivera inte omskrivningsregeln om den fysiska katalogen existerar.
När jag Googlade på problemet insåg jag att jag var långt ifrån ensam om problemet och det finns massor av ”lösningar”, men ingetdera fungerade för mig och jag insåg tillslut att de flesta lösningarna byggde på regler/villkor som åstadkom exakt samma sak som raden RewriteCond %{REQUEST_FILENAME} !-d, men formulerade på olika sätt, ungefär som mina två meningar här ovan.
Efter flera timmar gav jag upp försöken att hitta en lösning på nätet och valde att istället börja felsöka på egen hand.
Efter mycket testande fram och tillbaka insåg jag att det hela fungerar till viss del, i den mening att sidan börjar laddas utan felmeddelande, men när sidan laddats helt, så triggas ett 404-fel. Jag vet fortfarande inte vad eller varför, men jag kom på en enkel lösning.
Genom att skapa sidor i WordPress – inte inlägg – med samma rubrik som de fysiska underkatalogerna, så undviks 404-felet eftersom dessa ”sidor” existerar för WordPress, så WordPress rapporterar inte något fel, men villkoret i raden RewriteCond %{REQUEST_FILENAME} !-d uppfylls och triggas, så RewriteRule aktiveras inte för dessa adresser och plötsligt fungerar allt som det ska.
Lösningen fungerar onekligen, men det är inte någon lösning jag är helt nöjd med eftersom jag fortfarande inte förstår varför RewriteCond-villkoret inte uppfylls utan denna omväg, men för stunden nöjer jag mig med att det fungerar och någon gång i framtiden kanske jag kommer på varför.
Ibland får man helt enkelt vara nöjd med att det fungerar och strunta i varför.