【发布时间】:2017-11-13 16:21:21
【问题描述】:
我正在 React 中构建一个应用程序,由于应用程序的布局/状态,我无法使用 React Router,因此使用历史 JS 来管理站点导航。在我最外面的容器中,我设置了以下代码来管理导航:
handlePageChange = (event) => {
//stop default page change
event.preventDefault();
const history = createHistory()
if(typeof(event.target.tagName) === "undefined") {
var newURL = window.location.pathname;
} else {
var newURL = event.target.getAttribute('href');
history.push(newURL)
}
this.setState({
activePage:newURL.replace('/','')
})
setTimeout(function(){
this.setState({
sideNavState:""
})
}.bind(this),300)
}
上面的代码可以很好地用于导航页面,但是在直接访问链接时我遇到了问题。例如,如果我尝试访问 mysite.com/page1,我会在此服务器上找不到请求的 URL,因为我没有设置任何页面,因为它们由应用程序状态控制。
我希望所有页面(mysite.com/page1、mysite.com/page2 等)都指向位于根目录中的同一个 index.html 文件,那么正确的方法是什么?我使用了下面的 .htaccess 重写条件,但对所涉及的语法有点迷失,所以无法让它工作:
RewriteEngine On
RewriteRule ^(.+)\.php$ index.html?page=$1 [L,QSA,NC]
另外,我是否在这里使用了正确的方法来实现我想要实现的页面导航?值得注意的是,当我托管我的应用程序并且在 localhost 上它的行为符合我的要求时,我才会遇到这个问题。
谢谢!
【问题讨论】:
-
不确定 htaccess 中的正确方法(其他人肯定会回答)但您想将所有内容通配到 index.html 以便前端可以处理所有路由。
-
这是一个非常混乱的问题。我真的不确定你在问什么?是反应,php,htaccess,什么?你到底想要什么,什么是行不通的?我认为这可能是XY question。您的询问您尝试的解决方案,而不是您的实际问题。
-
是的 Samhh 是正确的,但我希望能够保留路径......
-
问题是关于 .htaccess @Liam 但我也在问 .htaccess 重写是否是正确的方法
标签: javascript php .htaccess reactjs history.js