在将ANGLE v15应用程序部署到基于apache的主机上时,我在从URL中删除#
标签时遇到了一些问题,因为一旦在客户端将其关闭,服务器就无法在刷新时加载正确的页面,并产生404错误.
我找到了,in the official documentation,上面写着:
您必须将服务器配置为在请求不具有的文件时返回应用程序的主页(index.html
我发现我应该将这个部分添加到网站的.htaccess
个文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]
</IfModule>
我现在面临的问题是,更改后,我的API不再工作.它是从/api/
根开始的,从mywebsite.com/api/login
开始,它现在将我转发到index.html
.
有没有解决这个问题的Angular ,添加/api
异常,不知何故,或它是对上述脚本的修复,跳过/api
路由?
这是我在网站根目录中的完整.htaccess
文件,托管在A2:
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/vitalyto/ptintec-api"
PassengerBaseURI "/"
PassengerNodejs "/home/vitalyto/nodevenv/ptintec-api/16/bin/node"
PassengerAppType node
PassengerStartupFile src/index.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]
</IfModule>
SOLUTION个
感谢Nigel Peck的回答,htaccess
的正确加法如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_URI} !^/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]
</IfModule>
现在我的Angular v15+可以很好地工作,没有令人讨厌的URL中的#
,并可以处理/api/
个请求.
UPDATE个
后来,我发现这个有whole generator project分!:)