Apache服务器直接访问/pricing路径报404的问题排查与解决(涉及Next.js配置)
Apache服务器直接访问/pricing路径报404的问题排查与解决(涉及Next.js配置)
我来帮你梳理这个问题的排查过程和最终解决办法,你遇到的这种场景其实挺典型的——前端路由和服务器配置的适配问题。
问题场景
- 运行环境:Ubuntu 20.04 + Apache服务器
- 核心现象:
- 先访问首页
https://leadzilla.ai,再点击定价按钮跳转到https://leadzilla.ai/pricing,页面能正常加载 - 直接在浏览器地址栏输入
https://leadzilla.ai/pricing,会返回404错误
- 先访问首页
- 额外说明:站点下的
/blog路径部署了WordPress,需要保持正常运行
当前Apache配置
你当前使用的两个Apache配置文件内容如下:
80端口配置(/etc/apache2/sites-available/leadzilla.ai.conf)
<VirtualHost *:80> DocumentRoot /var/www/leadzilla.ai ServerName leadzilla.ai ServerAlias www.leadzilla.ai <Directory /var/www/leadzilla.ai> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Allow from all </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =leadzilla.ai [OR] RewriteCond %{SERVER_NAME} =www.leadzilla.ai RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
443 SSL端口配置(/etc/apache2/sites-available/leadzilla.ai-le-ssl.conf)
<IfModule mod_ssl.c> <VirtualHost *:443> DocumentRoot /var/www/leadzilla.ai ServerName leadzilla.ai ServerAlias www.leadzilla.ai <Directory /var/www/leadzilla.ai> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Allow from all #Deny from all #Allow from 127.0.0.1 #Allow from ::1 </Directory> <Directory /var/www/leadzilla.ai/blog> AllowOverride All </Directory> Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/leadzilla.ai/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/leadzilla.ai/privkey.pem </VirtualHost> </IfModule>
尝试过的无效方法
你曾在Apache配置中添加以下重写规则,但没有解决问题:
RewriteRule ^pricing$ pricing.html [NC]
最终解决办法
后来确认问题根源不在Apache配置,而是Next.js的路由配置导致的。在Next.js的配置文件(通常为next.config.js)中添加exportTrailingSlash: true后,直接访问/pricing路径就可以正常加载了。
配置示例:
module.exports = { exportTrailingSlash: true, // 其他你的项目配置项 }
备注:内容来源于stack exchange,提问作者Saurav Gupta
相关产品推荐
相关产品推荐

