Een ^ geeft aan bij het begin van de uri aan.
Een . staat voor elk mogelijk karakter.
Een * betekend 0 of meer.
Een $ geeft aan bij het einde van de uri aan.
[L] zorgt er voor dat als deze rule matched de andere genegeerd worden.
^(.*)$ matches dus ALLES.
Je komt dus NOOIT bij de volgende RewriteRule.
Oplossing: verander de volgorde, de meest specifieke rewrite rules gaan eerder dan minder specifieke rules.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} !^(.*.(php|php3|css|php?.*|html|htm))|(/(images|cgi-bin|logs|upload|Test|)/.*)$
# Do not rewrite existing files RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .* - [L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?a=$1&x=$2 [L] RewriteRule ^([^/]+)$ index.php?a=$1 [L]
order allow,deny
allow from all
|
|
|
[^/] matches alles behalve een /
+ betekend een of meer (* was 0 of meer, weet je nog?)