Discoloration is almost always a result of direct sunlight and oxidation. All oil-modified floor finishes will amber over time, due to natural reactions with ultra violet light. Water based floor finishes will tend to lighten or yellow over time, due to the same reactions. Shading your windows and doors can help to slow the reaction, however, the floor system is going to change color.
As for a “fix”… Refinishing may be the only option with large areas of discoloration. If it is a small area that has been covered by an area rug… Simply remove the rug for several weeks and see if the floor starts to “catch up”. That may be all you need.