使用 Apache 服务器在特定路径 /pricing 上获取 404

使用 Apache 服务器在特定路径 /pricing 上获取 404

我已经在 Ubuntu 20.04 上设置了一个 Apache 服务器

当我首先加载主页时,网站加载正常(https://leadzilla.ai)然后当我点击定价按钮时,它会带我到https://leadzilla.ai/pricing并且该页面也可以正常加载。

但当我直接去https://leadzilla.ai/pricing在浏览器中,我得到了 404

以下是我所拥有的/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>

我有这个配置/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>

我有 Wordpresshttps://leadzilla.ai/blog所以这也必须得到照顾。

以下是我尝试过的: RewriteRule ^pricing$ pricing.html [NC]

我将其添加到其他重写规则之前,但似乎不起作用。有什么想法吗?

[编辑]

现在这个问题已经解决了。问题出在 Next.js 配置上,而不是 Apache 配置上。

我把它放进exportTrailingSlash: true了我的module.exports,它起作用了

答案1

我觉得这是很奇怪的行为。但是如果你RewriteRule在 中有<VirtualHost *:443>,那么你也应该有RewriteEngine On

你的目录中是否有任何符号链接。像 这样的foo -> foo.html

您的目录结构中是否有类似 /var/www/html/pricing/ 的目录?

另外,请记住,您的所有流量最终都会通过 HTTPS 传输,这意味着只有 才有效<VirtualHost *:443>。其他虚拟主机条目仅用于从 HTTP 重定向到 HTTPS。:80 VirtualHost 的任何重写规则均不适用于 HTTPS。

相关内容