mod rewrite stuurt me door naar index van mijn root, niet huidige map
Ik heb een .htaccess bestand waar ik een paar rewrites in heb staan, bijvoorbeeld ^home naar index.php, het probleem is alleen dat ik een server heb met meerdere sites. Een beetje zoals: root/websites/mijnhuidigeproject
Het .htaccess bestand staat in de map van mijn huidige project maar wanneer ik naar de url toe ga en /home toevoeg kom ik op de index die in mijn root folder staat.
Waar zou dat aan kunnen liggen? Ik heb ook een base tag toegevoegd die naar de juiste map verwijst.
Mijn .htaccess:
Op internet kan ik hier niks over vinden.
Het .htaccess bestand staat in de map van mijn huidige project maar wanneer ik naar de url toe ga en /home toevoeg kom ik op de index die in mijn root folder staat.
Waar zou dat aan kunnen liggen? Ik heb ook een base tag toegevoegd die naar de juiste map verwijst.
Mijn .htaccess:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
DirectoryIndex
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
#Indexes uitzetten
Options -Indexes
#Cross site access toestaan
Header set Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
#CMS rewrite
#Aanzetten wanneer website live staat
#RewriteRule ^cms/$ /cms/administrator [L]
#Projectnaam
DirectoryIndex index.php
RewriteRule ^home index.php [QSA,L]
RewriteRule ^overzicht shopping-cart-page.php [QSA,L]
RewriteRule ^bestellen checkout.php [QSA,L]
RewriteRule ^contact contact.php [QSA,L]
RewriteRule ^status success.php [QSA,L]
RewriteRule ^info/(.*) content.php?alias=$1 [QSA,L]
RewriteRule ^categorie/(.*) catlisting2.php?alias=$1 [QSA,L]
#Zorg ervoor dat onderstaande regels alleen worden uitgevoerd als het geen folder (d) is of een file (f)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ product-page.php?cat=$1&alias=$2 [QSA,L]
#RewriteRule ^test/([\w-]+)/([\w-]+)/?$ product-page2.php?cat=$1&alias=$2 [QSA,L]
RewriteRule ^([\w-]+)/?$ catlisting.php?alias=$1 [QSA,L]
#ErrorPages
ErrorDocument 404 /error/404.php
ErrorDocument 403 /error/403.php
ErrorDocument 500 /error/500.php
ErrorDocument 501 /error/501.php
ErrorDocument 503 /error/503.php
ErrorDocument 504 /error/504.php
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
#Indexes uitzetten
Options -Indexes
#Cross site access toestaan
Header set Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
#CMS rewrite
#Aanzetten wanneer website live staat
#RewriteRule ^cms/$ /cms/administrator [L]
#Projectnaam
DirectoryIndex index.php
RewriteRule ^home index.php [QSA,L]
RewriteRule ^overzicht shopping-cart-page.php [QSA,L]
RewriteRule ^bestellen checkout.php [QSA,L]
RewriteRule ^contact contact.php [QSA,L]
RewriteRule ^status success.php [QSA,L]
RewriteRule ^info/(.*) content.php?alias=$1 [QSA,L]
RewriteRule ^categorie/(.*) catlisting2.php?alias=$1 [QSA,L]
#Zorg ervoor dat onderstaande regels alleen worden uitgevoerd als het geen folder (d) is of een file (f)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ product-page.php?cat=$1&alias=$2 [QSA,L]
#RewriteRule ^test/([\w-]+)/([\w-]+)/?$ product-page2.php?cat=$1&alias=$2 [QSA,L]
RewriteRule ^([\w-]+)/?$ catlisting.php?alias=$1 [QSA,L]
#ErrorPages
ErrorDocument 404 /error/404.php
ErrorDocument 403 /error/403.php
ErrorDocument 500 /error/500.php
ErrorDocument 501 /error/501.php
ErrorDocument 503 /error/503.php
ErrorDocument 504 /error/504.php
Op internet kan ik hier niks over vinden.
Ik heb op m'n NAS ettelijke websites met elk een eigen (sub)-domeinnaam.
Dat houdt in dat elke map met een site de root van dat (sub)-domein is.
Je hoeft dan nooit te tobben om ervoor te zorgen dat de url goed uitkomt.
Dat houdt in dat elke map met een site de root van dat (sub)-domein is.
Je hoeft dan nooit te tobben om ervoor te zorgen dat de url goed uitkomt.
Het klinkt alsof je één codebase hebt waaronder meerdere sites actief zijn. Dit kun je waarschijnlijk het beste oplossen door je .htaccess zo kaal mogelijk te houden waarbij alle requests worden doorgestuurd naar de voordeur van je applicatie (index.php).
Daar ontleed je verder wat er met requests zoals /home moet gebeuren. Dit laat je mede afhangen van de hostname (een switch-statement op grond van $_SERVER['SERVER_NAME']). Op eenzelfde wijze kun je voor elke site een aparte database selecteren zodat je voor elke site ook echt een aparte administratie kunt bijhouden.
Hiervoor is het wel noodzakelijk dat je het gebruik van routing wat verder uitdiept, en er eigenlijk geen standalone scripts meer in de webdirectory voorkomen -behalve de meest noodzakelijke zoals index.php-, omdat dit mogelijk kan conflicteren met de routing.
Daar ontleed je verder wat er met requests zoals /home moet gebeuren. Dit laat je mede afhangen van de hostname (een switch-statement op grond van $_SERVER['SERVER_NAME']). Op eenzelfde wijze kun je voor elke site een aparte database selecteren zodat je voor elke site ook echt een aparte administratie kunt bijhouden.
Hiervoor is het wel noodzakelijk dat je het gebruik van routing wat verder uitdiept, en er eigenlijk geen standalone scripts meer in de webdirectory voorkomen -behalve de meest noodzakelijke zoals index.php-, omdat dit mogelijk kan conflicteren met de routing.
Gewijzigd op 25/10/2018 15:13:24 door Thomas van den Heuvel




