Using ISAPI 3.0 over IIS 6.0 for rewriting URL to Search Engine Friendly URL, I experienced this problem that links return 404 error when clicking any links on joomla. After googling for 3 hours, I found the right solution, which requires to hack the code.
.htaacess code
RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
With ISAPI_Rewrite we store original request in HTTP_X_REWRITE_URL. You can then assign value of this variable in PHP code to the REQUEST_URI variable
at /components/com_sef/sef.php
// IIS patch.
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
I append this code over sef.php by the way I'm using the component sh404SEF which I guess is the best for joomla I have tried OpenSEF (this component I guess is not continue for development) and ArtioSEF.