Javascript 如何删除路由器URL中的尾部斜杠
我开始在我的应用程序中使用react router,我注意到当它在URL的末尾有一个尾随斜杠(Javascript 如何删除路由器URL中的尾部斜杠,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我开始在我的应用程序中使用react router,我注意到当它在URL的末尾有一个尾随斜杠(/URL/)时,它不起作用。我搜索了更多关于它的信息,阅读了所有文档并对路由器问题做出了反应,并尝试使用,但这不是一个好的解决方案,因为它也不起作用。所以,在阅读更多内容后,我发现了一个建议,在URL的末尾插入/?,但它仍然不起作用 routes.js的代码: export default ( <Route path="/" component={App}> <
/URL/
)时,它不起作用。我搜索了更多关于它的信息,阅读了所有文档并对路由器问题做出了反应,并尝试使用
,但这不是一个好的解决方案,因为它也不起作用。所以,在阅读更多内容后,我发现了一个建议,在URL的末尾插入/?
,但它仍然不起作用
routes.js的代码:
export default (
<Route path="/" component={App}>
<IndexRoute component={ProfileFillComponents} />
<Route path="/seguro-residencia" handler={require('./components/Forms/Residencial/ProfileFill/profileFillComponents')} />
<Route path="/seguro-residencia/informacoes-pessoais" component={CotationNumber} />
</Route>
)
导出默认值(
)
index.js的代码:
render((<Router history={browserHistory} routes={routes} />), document.getElementById('root'));
render((),document.getElementById('root');
在搜索更多内容时,我发现一个家伙制作了一个函数,在URL上强制使用尾随斜杠,我决定使用相反的方法,强制不使用它
更新routes.js代码时不使用尾随斜杠函数:
export default (
<Route onEnter={forceTrailingSlash} onChange={forceTrailingSlashOnChange}>
<Route path="/" component={App}>
<IndexRoute component={ProfileFillComponents} />
<Route path="/seguro-residencia" handler={require('./components/Forms/Residencial/ProfileFill/profileFillComponents')} />
<Route path="/seguro-residencia/informacoes-pessoais" component={CotationNumber} />
</Route>
</Route>
)
function forceNoTrailingSlash(nextState, replace) {
const path = nextState.location.pathname;
if (path.slice(-1) === '/') {
replace({
...nextState.location,
pathname: path.slice(1,path.lastIndexOf('/')-1)
});
}
}
function forceNoTrailingSlashOnChange(prevState, nextState, replace) {
forceNoTrailingSlash(nextState, replace);
}
导出默认值(
)
功能强制导轨间隙(下一状态,更换){
const path=nextState.location.pathname;
if(path.slice(-1)='/')){
替换({
…nextState.location,
路径名:path.slice(1,path.lastIndexOf('/')-1)
});
}
}
功能forceNoTrailingSlashOnChange(上一状态、下一状态、替换){
强制导轨间隙(下一状态,更换);
}
这同样不起作用!我需要尽可能使这个URL更友好,我希望URL结尾没有任何尾随斜杠。有什么建议我该怎么做?为什么
重定向在这种情况下不起作用?我找到了一个很好的选择来进行重定向。以下是我正在使用的代码:
app.use(function(req, res, next) {
if (req.path.length > 1 && /\/$/.test(req.path)) {
var query = req.url.slice(req.path.length)
res.redirect(301, req.path.slice(0, -1) + query)
} else {
next()
}
});
基本的解释是:
在这个函数中,我验证URL是否是grand,然后是one,以及是否有一个尾随斜杠李>
如果为true,我得到这个URL而不带尾随斜杠,并将301重定向到这个页面而不带尾随斜杠
否则,我跳转到下一个方法发送一个值
你找到解决办法了吗?你能分享吗?是的,我有!我将很快发布我的解决方案。:)@user3241111我已经发布了!Tks@user3241111,你看到了吗?哦,我在期待一些客户端解决方案。但这应该行得通。但是,如何维护应用程序的状态呢?该状态不参与此过程。它是服务器端的。因此,它不会干扰您的应用程序。您可以将其路由传递到URL,而不使用尾随斜杠。下面是客户端点击的示例。要在路由中执行此操作,您可以使用“react route”并执行如下操作:
,而不使用尾部斜杠。它不会对您的应用程序造成任何错误。祝你好运谢谢你的回复。你说得对。但在我的例子中,我使用的是声明性URL,URL中可能没有提到URL(就像drobox中,URL是动态的,每个用户创建一个新文件夹)。因此,在这种情况下,它可能不起作用。但我想,服务器端是唯一好的解决方案。