We zitten in een overgangsfase van een website, hierbij zijn er zeer veel html bestanden aanwezig, deze blijven voorlopig zeker nog bestaan. Mede omdat de eigenaar van de site deze zelf eenvoudig en naar wens kan beheren. Echter komen er steeds meer dynamische pagina's op de site, welke ik wil afvangen met een applicatie (ZF based). Ik wil eigenlijk dat apache zo 'intelligent' configureren, dat de statische pagina's direct worden geserveerd zonder tussenkomst van de applicatie.
Hierbij wil ik graag de statische site in een submap zetten op de server, zodat we met een schone public root kunnen beginnen en de beheerder eenvoudig kan syncen zonder de applicatie om zeep te helpen.
Dit heb ik als volgt gedaan:
htdocs/index.php (applicatie index)
htdocs/.htaccess (om in de intelligentie te voorzien)
htdocs/_static/ (hier wil ik graag de statische site in hebben)
Nu had ik de volgende htaccess:
Wat zijn ding prima doet, echter kom ik dan in de knel met een link als
site.nl/downloads
Deze zou de pagina downloads/index.htm moeten serveren. Dit heb ik op kunnen lossen door:
toe te voegen. Dan wordt de pagina juist geserveerd. Echter staat er dan geen trailing slash achter de url. Waardoor alle relatieve links in deze pagina fout doorverwijzen. Is het mogelijk het standaard gedrag van Apache (wat goed werkt) te combineren met mijn andere eisen?
Ik heb namelijk het volgende ook geprobeerd:
Dit werkt dan wel goed, maar mijn ajax requests worden dan ook geredirect, waardoor dit weer in de soep loopt.
Hierbij wil ik graag de statische site in een submap zetten op de server, zodat we met een schone public root kunnen beginnen en de beheerder eenvoudig kan syncen zonder de applicatie om zeep te helpen.
Dit heb ik als volgt gedaan:
htdocs/index.php (applicatie index)
htdocs/.htaccess (om in de intelligentie te voorzien)
htdocs/_static/ (hier wil ik graag de statische site in hebben)
Nu had ik de volgende htaccess:
code:
1
2
3
4
5
6
7
8
9
10
| RewriteEngine On
RewriteBase /
# Check if requested page is origal
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !^_static.*$
RewriteRule ^(.*)$ _static/$1
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^.*$ index.php [L] |
Wat zijn ding prima doet, echter kom ik dan in de knel met een link als
site.nl/downloads
Deze zou de pagina downloads/index.htm moeten serveren. Dit heb ik op kunnen lossen door:
code:
1
2
3
| RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.htm -s
RewriteRule ^(.*)$ $1/index.htm [L] |
toe te voegen. Dan wordt de pagina juist geserveerd. Echter staat er dan geen trailing slash achter de url. Waardoor alle relatieve links in deze pagina fout doorverwijzen. Is het mogelijk het standaard gedrag van Apache (wat goed werkt) te combineren met mijn andere eisen?
Ik heb namelijk het volgende ook geprobeerd:
code:
1
2
3
4
5
| # Add trailing slash
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_URI} !.*\/.+\..+$
RewriteCond %{REQUEST_URI} !.*\/$
RewriteRule ^(.*)$ $1/ [L,R=301] |
Dit werkt dan wel goed, maar mijn ajax requests worden dan ook geredirect, waardoor dit weer in de soep loopt.
"Chaos kan niet uit de hand lopen"