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).
考虑到我的主要网站是 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).