Bob: mod_rewrite

Beitrag lesen

Deine RegEx ist zu weit. .* passt auf 0 bis n beliebige Zeichen. Soll das so sein, oder soll diese nur auf all das passen, was eben keinen Unterstrich enthält?

RewriteRule ^tmp_([^_]+)_([^_]+)_([^_]+).htm$ /index.php?see=$1&category=$2&save=$3 [L]
RewriteRule ^tmp_([^_]+)_([^_]+)_([^_]+)_([^_]+)_([^_]+).htm$ /index.php?see=$1&category=$2&save=$3&right=$4&profile=$5 [L]

Natürlich könntest du das RegEx-„Problem“ umgehen, indem du dir Regeln umdrehst, das ändert aber nichts daran, dass deine RegEx zu weit gefasst ist. Soll ein Punkt ein Punkt sein, so muss er per Backslash escaped werden, ansonsten bedeutet er 'ein beliebiges Zeichen'.

Manchmal ist es auch sinnvoller den Request per

RewriteRule ^tmp_ /index.php [L]

auf das PHP-Script zu lenken und dort $_SERVER['REQUEST_URI'] splitten und umfassend auszuwerten (d.h. auch auf erlaubte Werte prüfen).