PHP en .htaccess geen foutpagina
Heb na jaren lang aan ontwikkeling een cms systeem eindelijk afgekregen
Het ziet er vervolgens zo in elkaar
het pagina structuur was seo onvriendelijk
pagina.php?PageId=222 -
na rond neuzen is 't mij eindelijk gelukt om het seo vriendelijk te maken
eerste was het www.[websitenaam].nl/nl/Pagina/Over-ons
daarna vond ik 't URL TE lang heb ik 't "Pagina" weg gehaald en zag het er zo er uit "website.nl/nl/Over-ons"
maar het probleem is
als er in het url foute pagina getypt wordt krijg je geen foute pagina tevoorschijn terwijl het bij het instelling in het htacces voor website.nl/nl/Pagina/Over-ons wel verscheen
htaccess bestand ziet er zo eruit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
AddCharset UTF-8 .html
AddDefaultCharset UTF-8
AddType 'text/html; charset=UTF-8' html
AddType application/x-httpd-php .php .htm .html
Options +FollowSymLinks
RewriteEngine on
#rewritebase /
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.php [L]
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/?$ test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)?$ test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^/([a-zA-Z0-9_-]+) test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^Berichten/([0-9]+)/([a-zA-Z0-9_-]+) Berichten.php?PageId=$1
AddDefaultCharset UTF-8
AddType 'text/html; charset=UTF-8' html
AddType application/x-httpd-php .php .htm .html
Options +FollowSymLinks
RewriteEngine on
#rewritebase /
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.php [L]
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/?$ test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)?$ test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^/([a-zA-Z0-9_-]+) test-pagina.php?PageId=$1
RewriteEngine On
RewriteRule ^Berichten/([0-9]+)/([a-zA-Z0-9_-]+) Berichten.php?PageId=$1
waar kan het fout aan liggen?
Ward:
Titel en [code][/code]-tags aangepast.
Gewijzigd op 13/06/2016 11:38:40 door Ward van der Put
Waar je nu RewriteEngine On herhaalt, lijkt een RewriteCond te ontbreken. Na een rewrite-conditie (RewriteCond) hoort een rewrite-regel (RewriteRule) te volgen: als aan een conditie wordt voldaan, wordt de bijbehorende regel uitgevoerd.
dus zo iets?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^website/.nl$ [NC]
RewriteRule ^(.*)$ https://www.website.nl/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.html$ http://www.website.nl/$1 [R=301,L]
Als aan geen enkele conditie wordt voldaan, kun je aan het einde tot slot de 404 Not Found afhandelen. Dat wordt dan de laatste RewriteCond. Wat we daarmee in de praktijk vaak doen, is die afhandelen met de hoofdapplicatie /index.php, de "front controller" van je site.
Vervolgens rekent deze front controller (de "single point of entry" in je applicatie) op grond van de REQUEST_URI (direct of indirect) uit welke pagina geserveerd dient te worden. De uitkomst van die rekensom kan ook zijn dat de pagina niet bestaat of dat je deze vanwege rechten niet mag/kan zien. In beide gevallen zou je dan een 404 pagina kunnen serveren.