push state only when it differs from current pathname