Troubleshooting “index.php” in URLs
By default, Craft is unsure about whether your server is set up to handle URLs without “index.php”, so it makes an educated guess by sending requests to itself without it, and checking the response. It caches the results of its findings for 24 hours, or until Craft’s data caches are cleared.
Most of the time it works well, but every now and then there may be a false negative. The only way to ensure that your site never includes “index.php” in its generated URLs is to tell it explicitly not to.
You can do that by by opening up craft/config/general.php, and adding this to the array:
'omitScriptNameInUrls' => true,
With that in place, Craft will take your word for it and stop performing its daily checks.