我在一台服务器上使用多个角度项目,这是我的项目的文件夹结构
Root: Project-1
Root/test : Project2
Root/test/new : project3
这是我正在使用的htaccess代码。但是子目录项目有时不起作用
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]
问题是,当我试图使用这个url访问第二个项目www.domain.com/test
时,它会重定向到root
文件夹,即project1
。我认为它是在检查项目1的路由,当iIaccess项目2 时
我该如何解决这个问题。
我有一个类似的项目结构,下面的.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>
看看它是否有效。
有两个重要的地方可以让Angular清楚地了解你的应用程序启动url:
1-在index.html文件中
2-在服务器上的.htaccess文件中
您必须对";项目2";如下所示。
1-您可以在Angular应用程序的index.html中查看您的代码中的以下代码行:
<base href = "/" />
您将通过放置以下进行修改
<base href = "/test/" />
2-在root/test目录的根目录中创建.htaces文件,文件内容如下:
RewriteEngine On
RewriteCond% {HTTPS}! = On
RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301, NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
# If a path or directory request exists, go to it as is
RewriteCond% {DOCUMENT_ROOT}% {REQUEST_URI} -f [OR]
RewriteCond% {DOCUMENT_ROOT}% {REQUEST_URI} -d
RewriteRule ^ - [L]
# If the source of the request does not exist, use index.html
RewriteRule ^ /index.html
请注意,在最后一行RewriteRule ^ /index.html
中,将其更改为编译的index.html文件的路径,如下所示:
RewriteRule ^ /test/index.html
仅此而已。现在,您将对Project3执行相同的过程,您将看到一切是如何完美工作的。Ej:在index.html<base href = "/test/new/" />
中和在.htaccessRewriteRule ^ /test/new/index.html
中