【问题标题】:History JS/.htaccess - Rewrite all to index but preserve pathHistory JS/.htaccess - 全部重写为索引但保留路径
【发布时间】: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


【解决方案1】:

我找到了我想要的东西:

RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.html?id=$1 [QSA]

感谢这个链接here

现在文档停止页面寻找子目录根目录,用附加路径重写回站点根目录

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2018-03-01
    相关资源
    最近更新 更多