Elm导航防止无法GET
Elm navigation prevent cannot GET
我一直在玩 Elm 导航包,目前我正在使用 Hop 框架,我想知道是否有办法在没有井号的情况下阻止 cannot GET /<url>
消息url 前面(例如:#<url>
)。
我感觉这可能是服务器配置问题。要使 #-less url 正常工作,您需要将服务器配置为提供相同的 .html
,而不管请求 URL。一旦提供,您的 Elm 应用程序就可以加载并从那里获取它。
为了补充 Peter Szerzo 的回答,我发现 an issue at the Github page of browser-sync 页面与我遇到的问题大致相同。解决方法如下:
const modRewrite = require("connect-modrewrite");
gulp.task("serve", () => {
browserSync.init(null, {
middleware: [
modRewrite([
"!\.\w+$ /index.html [L]"
]),
]
}
}
如果你打算使用 Apache 或 Nginx,你当然需要使用不同的解决方案。这是特定于浏览器同步的。
更新
我 运行 进入另一个问题,上面的解决方案不起作用,因为它会从不同的位置再次获取项目。例如:手动导航到 /blog/1
会工作得很好,因为在更改到该位置时没有任何 HTTP 请求,但是在重新加载页面时,页面将从 /blog
获取文件,这上面的解决方案没有处理。这就是我解决后一个问题的方法:
middleware: [
(req, res, next) => {
const splitRequestUrl = req.url.split("/");
const fileName = splitRequestUrl[splitRequestUrl.length - 1];
//I have a seperate paths file
//Change paths.serve to whatever folder you want to specify as your base folder
if (fs.existsSync(path.join(process.cwd(), paths.serve, fileName)))
req.url = `/${fileName}`;
else
req.url = "/";
next();
}
]
我一直在玩 Elm 导航包,目前我正在使用 Hop 框架,我想知道是否有办法在没有井号的情况下阻止 cannot GET /<url>
消息url 前面(例如:#<url>
)。
我感觉这可能是服务器配置问题。要使 #-less url 正常工作,您需要将服务器配置为提供相同的 .html
,而不管请求 URL。一旦提供,您的 Elm 应用程序就可以加载并从那里获取它。
为了补充 Peter Szerzo 的回答,我发现 an issue at the Github page of browser-sync 页面与我遇到的问题大致相同。解决方法如下:
const modRewrite = require("connect-modrewrite");
gulp.task("serve", () => {
browserSync.init(null, {
middleware: [
modRewrite([
"!\.\w+$ /index.html [L]"
]),
]
}
}
如果你打算使用 Apache 或 Nginx,你当然需要使用不同的解决方案。这是特定于浏览器同步的。
更新
我 运行 进入另一个问题,上面的解决方案不起作用,因为它会从不同的位置再次获取项目。例如:手动导航到 /blog/1
会工作得很好,因为在更改到该位置时没有任何 HTTP 请求,但是在重新加载页面时,页面将从 /blog
获取文件,这上面的解决方案没有处理。这就是我解决后一个问题的方法:
middleware: [
(req, res, next) => {
const splitRequestUrl = req.url.split("/");
const fileName = splitRequestUrl[splitRequestUrl.length - 1];
//I have a seperate paths file
//Change paths.serve to whatever folder you want to specify as your base folder
if (fs.existsSync(path.join(process.cwd(), paths.serve, fileName)))
req.url = `/${fileName}`;
else
req.url = "/";
next();
}
]