发现我在NextJS上的站点有问题,在开发过程中,我使用按钮导航站点,并手动更改浏览器地址栏,碰巧我不小心在末尾添加了一个斜杠,但我的localhost服务器将其删除,一切正常。
但是当我把我的静态应用程序上传到主机上时,一切都改变了。它在重新加载页面时自动开始添加这些斜线。正因为如此,我在网站上的图片断裂了。
据我所知,您需要正确配置.htaccess
文件。
下面是它现在的样子:
RewriteEngine On
RewriteRule ^([^/]+)/$ $1.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.html
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
1条答案
按热度按时间w8f9ii691#
您现有的规则都希望(或强制)在所有URL上添加一个尾随斜杠。因此,如果规范URL(和你链接到的网址)不包括一个尾随斜线,那么所有这些规则基本上需要颠倒过来。(例如,第一个规则是 * 无条件地 * 重写请求以附加
.html
扩展,这在下一个规则中以 * 条件 * 重复)。请尝试以下操作:
你原来的指令只处理一个或两个路径深度的URL(例如
/foo/
或/foo/bar/
)。上面的第二条规则处理任何路径深度(如果需要的话)。例如/foo
,/foo/bar
,/foo/bar/baz
等(没有拖尾斜杠)。作为一种优化,我 * 假设 * 您的URL需要重写不包含点(否则用于分隔文件扩展名)。
注意,
RewriteRule
* pattern *(第一个参数)只匹配URL路径(而不是查询字符串)。如果初始请求中有任何查询字符串,则默认情况下只传递该查询字符串。(对于重写和客户端JS,查询字符串在初始请求中可用,并且应该像以前一样进行解析。)正因为如此,我的照片在网站上打破。
如果您使用的是相对URL,则会发生这种情况。您应该使用根相对(以斜杠开头)或绝对URL来解决此问题。