Probleem met htaccess seo vriendelijk!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.website\.nl [NC]
RewriteRule ^(.*)$ https://www\.website\.nl/$1 [L,R=301]
# Als de naam + .php bestaat, mag de regel pas toegepast worden.
RewriteCond %{REQUEST_FILENAME}\.php -f
# Schrijft .php achter de url.
RewriteRule ^(([^/]+/)*[^.]+)$ $1.php [L]
#verwijder .php
#RewriteCond %{THE_REQUEST} \.php
#RewriteRule ^(.*)\.php$ /$1 [R=301,L]
#URL Friendly
RewriteRule ^entertainment/(.*) item.php?url=$1
RewriteCond %{HTTP_HOST} !^www\.website\.nl [NC]
RewriteRule ^(.*)$ https://www\.website\.nl/$1 [L,R=301]
# Als de naam + .php bestaat, mag de regel pas toegepast worden.
RewriteCond %{REQUEST_FILENAME}\.php -f
# Schrijft .php achter de url.
RewriteRule ^(([^/]+/)*[^.]+)$ $1.php [L]
#verwijder .php
#RewriteCond %{THE_REQUEST} \.php
#RewriteRule ^(.*)\.php$ /$1 [R=301,L]
#URL Friendly
RewriteRule ^entertainment/(.*) item.php?url=$1
Wat werkt is www.website.nl/entertainment (dit is dan de file entertainment.php)
Maar wat niet werkt is www.website.nl/entertainment/pipo (dit is dan de file item.php). Ik krijg dan een 500 internal error.
Iemand enig idee wat ik niet goed doe?
En wat zegt de error_log over de de foutmelding?
Een enkele voordeur voor je applicatie (single point of entry) verdient ook de voorkeur. Dit is meestal /index.php
Vanwaar het onderscheid tussen /entertainment en de rest?
Waarom stuur je niet alles door naar één bestand?
En als het PHP-bestand bestaat, dan stop je verdere verwerking door de rewrite engine.
Wat Thomas zegt is inderdaad een goede optie, maar het vergt wel mogelijk een grondige verbouwing van je applicatie, waardoor je jouw index.php ombouwt tot een 'voordeur' in plaats dat je nu met rewrite-rules via diverse ramen van je huis probeert binnen te komen, zoals via je 'entertainment' kamer.
Maar voor nu weet ik niet hoe ik dit probleem kan oplossen.
De file item.php bestaat gewoon en wil dan
www.website.nl/entertainment/pipo (= www.website.nl/item.php?artiest=pipo)
www.website.nl/entertainment/peppi (= www.website.nl/item.php?artiest=peppi)
www.website.nl/entertainment/mamaloe (= www.website.nl/item.php?artiest=mamaloe)
De file haalt dan de gegevens uit de dbase.
Daarnaast heb ik dan een overzicht: www.website.nl/entertainment.php wat nu www.website.nl/entertainment is.
Gewijzigd op 20/04/2020 15:50:49 door Kees Mulder
Wat zegt de error_log? Dat lijkt mij het interessantste als je aangeeft dat je een error 500 krijgt.
De enige PHP-bestanden die dan in principe in de webdirectory horen zijn dan dus je single point of entry (/index.php) en eventuele standalone scripts die je af en toe uitvoert om bepaalde taken uit te voeren.
Mogelijk kom je met de bovenstaande .htaccess in een oneindige loop terecht, omdat je heen en weer pingpongt tussen een aanroep met en zonder .php-extentie. Ook is dit mogelijk een "lek" wat uitgebuit kan worden om jouw webserver op de knieën te krijgen.
Heb je toevallig in jouw netwerktab al gekeken hoe vaak je geredirect wordt? Overigens is het niet nodig om voor een (interne) verwijzing/mapping een (externe) redirect te doen. Dit kan rechtstreeks en hoeft niet, en zou niet uit hoeven te monden in een extra request.
Gewijzigd op 20/04/2020 16:12:20 door Thomas van den Heuvel