Apache 重定向到 AngularJs 的 index.html

Apache 重定向到 AngularJs 的 index.html

我正在构建和部署我的 AngularJs 应用程序。

文件夹结构如下:

/
/path
/path/to
/path/to/install
/path/to/install/index.html
/path/to/install/js
/path/to/install/css
...

我想将所有请求重定向到 /path/to/install/index.html,除非请求文件存在。

最初我将我的应用程序放在 /dev 中,并且将 .htaccess 放在 /dev 中:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

ErrorDocument 404 /dev/index.html

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/api
RewriteRule ^.*$ - [NC,L]

# otherwise forward it to index.html
#RewriteRule ^.*$ - [NC,L]
RewriteRule ^/(.*) /dev/$1 [NC,L]

它工作正常。但是,当我将其放入 /path/to/install 并在 .htaccess 中更改“/dev”时,即使我输入以下内容,服务器也总是给出 500 内部服务器错误:

www.mysite.com/path/to/install/index.html

当我删除 /path/to/install/ 中的 .htaccess 时,500 错误就消失了。我尝试将 .htaccess 放在 /path 等中,并尝试在 .htaccess 中进行一些不同的路径设置,但仍然无法解决问题。

当我将 .htaccess 放入 /path/to/install: 时,我发现如果 .htaccess 包含:

Options +FollowSymLinks

仅,没有 500 错误但如果 .htaccess 包含:

Options +FollowSymLinks
IndexIgnore */*

或者

Options +FollowSymLinks
RewriteEngine on

这两个都给我 500。

我不确定它是否能给出问题所在。如何解决?

答案1

这是由于 .htaccess 的行分隔符格式错误造成的。使用文本编辑器将格式更改为其他格式(CRLF/ LF/ CR)即可解决问题。

相关内容