Update
BTW make sure in your import csv url_key field/column is added with respective values, if not magento will not add the url rewrites, this minor mistake could be the possible cause of the issue that you face right now. Kindly add url_key in your import csv and update.
If still the issue persists then try update #2.
Saving these products manually solves the issue.
Re-indexing product data does NOT solve the issue
Both of your statements confirm that the respective indexers were not refreshed after import. Though you manually re-indexed all the indexers these products didn't show up, its weird.When you save the products manually from the admin panel your products appear on the store front, which means the indexers refreshed update on save.
So to quickly answer your question and make your products show up on storefront without having to re-save products one by one. You need to write a quick script which will refresh all the indexers for the given product which makes it appear on the store front.
Added below a quick code to refresh all the indexers of the products which do not show up in the store front. just add your product ids in productIdsToRefreshIndex array.
//add all your products ids to this array
$productIdsToRefreshIndex = array(2014,2015,2016,2017,2018,2019,2020);
$event = Mage::getModel('index/event');
$event->setNewData(array(
'product_ids' => &$productIdsToRefreshIndex
));
Mage::getResourceSingleton('catalog/category_indexer_product')->catalogProductMassAction($event);
// Reindex prices
Mage::getResourceModel('catalog/product_indexer_price')->reindexProductIds($productIdsToRefreshIndex);
// Reindex stock
Mage::getResourceModel('cataloginventory/indexer_stock')->reindexProducts($productIdsToRefreshIndex);
// Reindex attributes
Mage::getResourceModel('catalog/product_indexer_eav_source')->reindexEntities($productIdsToRefreshIndex);
//Reindex catalogsearch fulltext
$catalogSearchIndexer = Mage::getResourceModel('catalogsearch/fulltext');
$catalogSearchIndexer->rebuildIndex(null, $productIdsToRefreshIndex);
Update #2 - Refreshing Product URL Rewrites
//add all your products ids to this array
$productIdsToRefreshIndex = array(2014,2015,2016,2017,2018,2019,2020);
// check Mage_Catalog_Model_Url::refreshProductRewrite method for more details
// create a catalog url instance
$_catalogUrl = Mage::getSingleton('catalog/url');
foreach($productIdsToRefreshIndex as $key => $productId) {
$_catalogUrl->refreshProductRewrite($productId);
}
This piece of code will create url rewrites for your products. Just pass the right product ids and store ids.
As well as , When you save the product from the admin panel, the url rewrites of the product will be updated based on the url key provided, which is the behavior you observed.