Apache rewrite rules not being applied for angularjs
This is now much easier in Apache 2.2.16+ using the FallbackResource directive.
FallbackResource /app/index.html
http://httpd.apache.org/docs/2.2/mod/mod_dir.html#fallbackresource
Depending on how you're forwarding access to your API you may need to also leverage the enclosure to disable the fallback resource on specifically on API requests (2.2.24+).
<Directory /api> FallbackResource disabled</Directory>
This works for me:
<ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !index RewriteRule (.*) index.html [L]</ifModule>
I had this same issue. But I'm ignorant in mod_rewrite
so had to Google a lot.I found the solution in this email:
https://groups.google.com/d/msg/angular/GmNiNVyvonk/mmffPbIcnRoJ
So I think your .htaccess should look as follows:
Options +FollowSymLinksIndexIgnore */*RewriteEngine on# if a directory or a file exists, use it directlyRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteCond %{REQUEST_URI} !/apiRewriteRule ^.*$ - [NC,L]# otherwise forward it to index.html RewriteRule ^app/(.*) /app/#/$1 [NC,L]
Notice the (.*)
and the #/$1
Note: you MUST use absolute paths in your includes CSS, JS, etc. if not you are going to get the error:
resource interpreted as script but transferred with mime type text/html