nginx: Trailing Slash zu URLs hinzufügen per Rewrite Rule

Damit nginx ein Slash (/) an das Ende einer URL anhängt, kann man folgende Rewrite Rule verwenden:

rewrite ^(.*[^/])$ $1/ permanent;

Diese nginx Rewrite Rule hängt an jede URL, die nicht mit einem Trailing Slash endet, einen Slash an. Dummerweise passiert das auch dann, wenn man Dateien aufruft, also wird z.B. www.example.com/style.css zu www.example.com/style.css/. Um das zu verhindern, kann man die folgende nginx Rewrite Rule verwenden, die ein Trailing Slash nur dann anhängt, wenn die ursprüngliche URL keinen Punkt (.) und keinen Trailing Slash enthält:

rewrite ^([^.]*[^/])$ $1/ permanent;

Die Rewrite Rules kann man im server {}-Container verwenden, aber z.B. auch in einem location {}-Container, um den Trailing Slash nur in bestimten Unterverzeichnissen anzuhängen.

Danach noch nginx reloaden, und fertig:

/etc/init.d/nginx reload

Nach oben