在子文件夹

时间:2015-12-08 07:42:52

标签: angularjs apache .htaccess mod-rewrite

我有一个使用html5mode的Angular应用程序,但它当前位于网站的子文件夹中:http://somesite.com/za/

所以我设法重写了url以正确指向我的资源文件夹,但是当我点击刷新或直接导航到页面时,我仍然得到404.

这样可行:http://somesite.com/za/assets/js/bundle.js

这不起作用,404:http://somesite.com/za/home

的.htaccess

RewriteEngine On
#This apparently creates a redirect loop for angular
RewriteRule ^(.*)/$ /$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(za/.*) /za/index.html [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?:[^/]*/)*([^/.]+\.(?:jpe?g|gif|bmp|png||css|js))$ za/assets/$1 [R=301,L,NC]

AddType image/svg+xml svg svgz
AddEncoding gzip svgz

那么当我点击或刷新页面时,重写无法重定向到index.html的位置?

1 个答案:

答案 0 :(得分:2)

用更优雅的重写规则解决了这个问题:

metachange

但是,这确实提供了对其他文件和目录的读访问权限,因此可能存在安全问题。