我的AngularJS应用程序正在使用html5模式进行漂亮的网址。我本地环境中的网址有效但直接在浏览器中输入完整的网址会导致我的测试服务器(在Heroku上设置)响应404" Not Found"错误。
示例:
1)键入" localhost / log_in"或者" localhost"直接进入浏览器结果登录页面。
2)打字" localhost / fkjdlfdsaf"或以" localhost /"开头的任何其他网址;直接进入我的浏览器会导致登录页面。
3)打字" myapplication.herokuapp.com" (测试环境)直接进入浏览器也会导致登录页面。
4)打字" myapplication.herokuapp.com/log_in" (测试环境)然而,错误地导致404" Not Found"错误。
似乎测试环境服务器没有加载[root dir] /index.html,因为该文件包含脚本(包括提供" login"的页面,如果url没有&## 39; t匹配任何其他路线。)
有人可以告诉我我的测试服务器上缺少什么吗?我更喜欢修改" httpd.conf"使用.htaccess文件文件。
本地服务器上的httpd.conf片段:
DocumentRoot "C:/Sites/myApplication"
<Directory "C:/Sites/myApplication">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
</Directory>
要在Heroku上配置Web服务器,我创建了两个文件procfile.txt(请参阅this和this)以及apache_app.conf(请参阅this)。
procfile.txt(heroku):
web: vendor/bin/heroku-php-apache2 -C apache_app.conf
apache_app.conf:
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]