Mijn doel: fysieke files op het filesysteem mogen rechtstreeks benaderd worden en al de rest moet rewritten worden naar /index.php?<originele URI>.
Voorbeeld: https://userbase.be/foo -> https://userbase.be/index.php?foo . Indien in de oorspronkelijke URI een query string zat mag die ook toegevoegd worden, al is dat (op dit moment) niet nodig.
in de Apache 2.4-config-file heb ik staan:
Code: Selecteer alles
RewriteEngine On
########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)
# RewriteBase /
########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section
Met trace5-level logging krijg ik:
Code: Selecteer alles
init rewrite engine with requested uri /foo
applying pattern '^(.*)$' to uri '/foo'
RewriteCond: input='' pattern='mosConfig_[a-zA-Z_]{1,21}(=|\\%3D)' => not-matched
RewriteCond: input='' pattern='base64_encode.*\\(.*\\)' => not-matched
RewriteCond: input='' pattern='(\\<|%3C).*script.*(\\>|%3E)' [NC] => not-matched
RewriteCond: input='' pattern='GLOBALS(=|\\[|\\%[0-9A-Z]{0,2})' => not-matched
RewriteCond: input='' pattern='_REQUEST(=|\\[|\\%[0-9A-Z]{0,2})' => not-matched
applying pattern '(.*)' to uri '/foo'
RewriteCond: input='/foo' pattern='!-f' => matched
RewriteCond: input='/foo' pattern='!-d' => matched
RewriteCond: input='/foo' pattern='!^/index.php' => matched
RewriteCond: input='/foo' pattern='(/|\\.php|\\.html|\\.htm|\\.feed|\\.pdf|\\.raw|/[^.]*)$' [NC] => matched
rewrite '/foo' -> 'index.php'
applying pattern '.*' to uri 'index.php'
setting env variable 'HTTP_AUTHORIZATION' to ''
local path result: index.php