Ich benutze mod_rewrite, um URLs wie diese umzuschreiben:
http://example.com/1,2,3,4/foo/
Auf diese Weise in .htaccess:
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
Es funktioniert einwandfrei, außer wenn "1,2,3,4" in eine Zeichenfolge mit mehr als 255 Zeichen umgewandelt wird, gibt Apache "403 Forbidden" zurück.
foo.php?id=1,2,3,4Selbst mit einer sehr langen ID-Zeichenfolge ist ein direkter Besuch kein Problem. Dies ist jedoch keine Option für mich.
Gibt es Apache oder eine andere Einstellung, die ich anpassen sollte?
UPDATE : Ich habe RewriteLog mit RewriteLogLevel 9 aktiviert. Mit einer kurzen ID-Zeichenfolge werden mehrere Zeilen in meiner Protokolldatei angezeigt. Wenn die ID-Zeichenfolge jedoch größer als 255 Zeichen ist, wird nichts protokolliert (scheint, als würde mod_rewrite nicht einmal ausgeführt?).
Wenn Sie diese Frage interessant / hilfreich finden, stimmen Sie sie bitte hoch.
RewriteLogund RewriteLogLevelSie können sehen, was abgeglichen wird und wie es tatsächlich umgeschrieben wird. Ich würde vermuten, dass nur 255 Zeichen kopiert werden $1und dass idder Client nicht berechtigt ist, diese zu sehen. Apache gibt die 403 zurück. Ich habe mir den Code nicht angesehen, aber es könnte sein, dass Apache manipuliert die Rückreferenz in einem festen 256-Byte-Puffer (der 256. ist für den terminierenden NULL-Wert reserviert).