Angular WordPress 子文件夹 apache 上的 404 页面

Angular 404 page on Wordpress subfolder apache

考虑到我的主要网站是 https://example.com 的 angular 应用程序,我将 dist 文件夹的内容放在 public_html 中。此外,https://example.com/mag/ 上还有一个 WordPress 网站。我正在使用 cpanel 主机,我只能访问 .htaccess 来设置重定向。

我需要将除 mag/ 之外的所有 angular 路由重定向到 index.html。但是,当我使用 link 从我的主 angular 应用程序转到 https://example.com/mag/ 时,它没有打开 WordPress 站点,而是重定向回 angular 应用程序。

我当前的 .htaccess 仍然无法正常工作:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_URI} ^/mag/
    RewriteRule ^ - [L]

    # If the requested resource doesn't exist, use index.html
    RewriteRule ^ /index.html

</IfModule>

我通过为 /mag 添加例外来解决问题,就像这样 RewriteCond %{REQUEST_URI} !^/mag/。整个.htaccess应该是这样的:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # -- REDIRECTION to https (optional):
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_URI} !^/mag/ # -- <== here 
    RewriteRule ^ - [L]

    # If the requested resource doesn't exist, use index.html
    RewriteRule ^ /index.html

</IfModule>

为什么这个改动解决了问题?

当您尝试从主网站导航至 https://example.com/mag 时,Angular 路由无法找到 /mag,因为它不是 angular 应用程序的一部分,并且它转到 angular 404 页面。所以这个异常解决问题只是因为路由到/mag时,不会重定向到index.html(Angular).