You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular用作WordPress主题时非根路由404如何重定向到index.html

你修改.htaccess不生效的核心原因是HTTPS站点的虚拟主机配置未启用.htaccess解析:你贴出的仅为80端口的HTTP配置,当前所有请求都会跳转HTTPS,而Certbot自动生成的443端口HTTPS配置默认没有开启AllowOverride All,导致.htaccess文件完全不被读取。


1. 修复HTTPS站点配置,启用.htaccess支持

首先找到HTTPS站点配置文件,通常路径为 /etc/apache2/sites-enabled/example_com-le-ssl.conf,在文件中找到<Directory "/var/www/html">配置段,修改为以下内容:

<Directory "/var/www/html">
  AllowOverride All
  Require all granted
</Directory>

然后启用rewrite模块(如果未启用),并重载Apache配置生效:

sudo a2enmod rewrite
sudo systemctl reload apache2

2. 更新.htaccess重写规则

将/var/www/html/.htaccess替换为以下配置,兼顾WordPress后台/静态资源访问和Angular路由支持:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /

# 放行WordPress核心路径、静态文件
RewriteCond %{REQUEST_URI} ^/wp-(admin|content|includes)/ [NC,OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# 其余所有请求转发到index.php,交由Angular处理路由
RewriteRule . /index.php [L]
</IfModule>

3. 可选兜底方案(无需.htaccess)

如果你不需要用.htaccess做其他配置,可以直接在HTTPS虚拟主机配置中添加404错误页指向,所有不存在的路径都会直接交给Angular处理:

<VirtualHost *:443>
  # ... 其余原有配置不变
  ErrorDocument 404 /index.php
  
  <Directory "/var/www/html">
    AllowOverride None
    Require all granted
  </Directory>
</VirtualHost>

修改后同样执行systemctl reload apache2重载配置即可。

验证效果

修改完成后用浏览器无痕模式访问非根路径,确认Angular路由可以正常加载,不会返回404即可。


内容的提问来源于stack exchange,提问作者RobinAnderssonCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:06:02