【问题标题】:Angular .htaccess for root and subdirectory根目录和子目录的 Angular .htaccess
【发布时间】:2021-03-24 06:03:42
【问题描述】:

我在单个服务器上使用多个 Angular 项目, 这是我的项目的文件夹结构

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 。我认为它正在检查 project1 路由,当 iIaccess project2 时

我该如何解决这个问题。

【问题讨论】:

  • 感谢您在问题中分享您的代码,能否请您提及您面临的问题是什么?另外请发布网址示例,这将有助于我们更清楚地理解您的问题,谢谢。
  • 感谢您的回复,问题是,当我尝试使用此网址 www.domain.com/test 访问第二个项目时,它会重定向到根文件夹,即 project1。我认为它正在检查 project1 路由,当我访问 project2 时。
  • 有什么解决办法吗?

标签: angular apache .htaccess


【解决方案1】:

我有一个类似的项目结构,下面的 .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>

看看它是否有效。

【讨论】:

  • 感谢您的回答,不幸的是它不起作用,仍然重定向到根文件夹。
  • @SadiqueHere 您的项目是否包含任何路由保护?像 auth 还是别的什么?
  • 还有一件事。在 root 以外的项目上尝试哈希定位策略。
  • 我检查了无人看守的路线,它也不起作用。
  • 我所有的非根项目都有哈希位置,因此我可以使用 window.location.href 路由到特定组件。
【解决方案2】:

看我的朋友。你想做的事情很容易解决。

有 2 个重要的地方可以让 Angular 清楚您的应用启动 url:

1 - 在 index.html 文件中

2 - 在服务器上的 .htaccess 文件中

您必须对“Project2”进行以下更改。

1 - 您在 Angular 应用的 index.html 中的代码中查找以下代码行:

<base href = "/" />

您将通过放置以下内容对其进行修改

<base href = "/test/" />

2 - 您在 Root/test 目录的根目录中创建 .htacces 文件,其内容如下:

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 执行相同的过程,您将看到一切如何完美运行。乙: 在 index.html &lt;base href = "/test/new/" /&gt; 并在 .htaccess RewriteRule ^ /test/new/index.html

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2012-01-26
    • 2014-12-21
    • 2011-08-24
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多