How can I make URL Alias required when creating new content
The easiest solution is to use the pathauto module. If the user does not touch the URL path alias field, pathauto will automatically generate a URL for the node based on the node title.  Other configuration options are available.  The user may still uncheck the pathauto checkbox and type in a specific URL for their new node.

Update:

If the URL format is built from fields or metadata in the node that is created, pathauto can do that for you automatically through its pattern configuration page. For example, I have one content type with a pattern [node:field-gender:name]/[node:field-era:name]/[node:field-genre:name]/[node:field-item-type:name]/[node:title] to create four levels of nesting in the URL based on field values entered. If the user does not have the permission to create and edit url aliases, they will be stuck with the pattern pathauto provides. 

If you want to allow users to also edit the URL, you could validate the field from hook_node_validate. I don't know if there is a way to do node validation with rules.

Update 2:

If you have a field called "tag" that is a taxonomy term, then [node:tag] will return all of the terms in this field, concatenated together, and [node:tag:1] will return just the first taxonomy term.  In both cases, spaces are converted to dashes.