Well historically firearms replaced bows* for number of reasons but as has already been mentioned, probably most important was that training men to use firearms was significantly cheaper and quicker. Unfortunately in Civ muskets cost the same to recruit as xbows/longbows at 120 hammers, while riflemen cost 200. Maybe musket and rifle costs could be reduced to approximate this easier training? Perhaps this would be easier to balance than simply increasing their strength.
To expand on the idea, cities with advanced buildings (e.g. forge, or even forge+university/workshop to represent the complexity of metal forging) should produce riflemen cheaper than archers. A city building a riflemen without a forge should pay the full 200.
That would help represent the "guns are easy to use, but require a significant infrastructure to build en masse" concept versus the "anyone can make a longbow, but archers are tough to train."
Another idea would be to make longbows a resource dependent unit.
That's an excellent idea.
Vehicle units (such as ironclads) really should take reduced damage from lower age units to reduce the longbow versus ships problem. Alternatively, vehicles/ships should take reduced damage from "anti-personnel" type weapons.
Ranges. Archer units really shouldn't even have two hexes of range (one hex is enough.) The only reason for multi-hex range is to represent the idea of archers in the rear ranks firing over friendlies and into the enemy ranks. Some alternatives would be:
*
the Civ IV first strike ability. You would rely on the Archer's two movement points to attack and retreat. Plus you have to remember that archers can be right next to a melee unit and can attack that melee unit without taking return damage.
*
Defensive First Strike. Allow one first strike attack per turn on an enemy melee unit that attacks an adjacent friendly melee unit.
*
Flanking bonus. An archer unit next to (aka "behind") a melee provides an additional bonus to the melee unit to represent archers attacking the enemy melee unit right before it attacks the friendly melee unit.
Even so, a one-hex range Archer would be difficult to use effectively since it would be so vulnerable standing right next to the enemy. So how about:
*
Melee/Archer "mini-cities" or Garrisons in a unit. A melee unit can act as a "city" to an archer unit. The archer unit would "garrison" "inside" the melee unit. The archer unit could still the attack the adjacent enemy unit, but when the enemy unit attacks the archer it would instead attack the friendly melee unit. This would require setup just like a siege weapon would need.
*
Expand the Unit Stacking from Combat unit + Support unit (e.g. Worker) to Combat Unit (spearmen) + Ranged Unit (archer) + Support Unit (worker.) Melee attacks would hit the melee unit first.