Problem with "w" and "s"

I have a problem with W and S. I use this script…

var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
var rotateSpeed : float =3.0;

private var moveDirection : Vector3 = Vector3.zero;
function Update() {
	var controller : CharacterController = GetComponent(CharacterController);
	if (controller.isGrounded) {
		// We are grounded, so recalculate
		// move direction directly from axes
		moveDirection = Vector3(0, 0,Input.GetAxis("Vertical"));
		
		//Rotate code
		transform.Rotate (0,Input.GetAxis("Horizontal") * rotateSpeed, 0);
		
		moveDirection = transform.TransformDirection(moveDirection);
		moveDirection *= speed;
		
		if (Input.GetButton ("Jump")) {
			moveDirection.y = jumpSpeed;
		}
	}
	// Apply gravity
	moveDirection.y -= gravity * Time.deltaTime;
	
	// Move the controller
	controller.Move(moveDirection * Time.deltaTime);
}

Rotation in this script work fine but when i press W or S my character moove sideway, but i want
to my character moove forwards or backwards!?
I have tried change script and edit the control settings in unity but it doesnt work!

If you change this line :

moveDirection = Vector3(0, 0,Input.GetAxis("Vertical"));

to this line :

moveDirection = Vector3(Input.GetAxis("Vertical"), 0, 0);

Does that make any difference?