我正在构建和部署我的 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)即可解决问题。