2017-06-12 1 views
0

Ich baue eine App in React und aufgrund des Layouts/Status der App kann ich React Router nicht verwenden und daher History JS verwalten Seitennavigation. In meinem äußeren meisten Container habe ich Setup die folgende Code-Navigation zu verwalten:Verlauf JS/.htaccess - Schreibe alles in den Index, aber behalte den Pfad

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) 

} 

Der obige Code funktioniert gut für die Navigation Seiten, aber ich habe ein Problem, wenn es direkt auf den Link für den Zugriff kommt. Wenn ich zum Beispiel versuche, auf mysite.com/page1 zuzugreifen, bekomme ich eine angeforderte URL, die auf diesem Server nicht gefunden wird, weil ich keine Seiten eingerichtet habe, da sie vom Status der Apps gesteuert werden.

Ich möchte, dass alle Seiten (mysite.com/page1, mysite.com/page2 etc ..) auf die gleiche index.html Datei zeigen, die im root liegt, also was wäre der richtige Ansatz dafür? Ich habe die folgende .htaccess umschreiben Bedingungen verwendet, aber ist ein bisschen mit dem hat beteiligt Syntax verloren so nicht in der Lage gewesen, um es an der Arbeit:

RewriteEngine On 
RewriteRule ^(.+)\.php$ index.html?page=$1 [L,QSA,NC] 

Auch bin ich hier für die Seitennavigation des richtigen Ansatz Ich versuche zu erreichen? Beachten Sie, dass ich dieses Problem nur bekomme, wenn ich meine App host und auf localhost verhält, wie ich es will.

Danke!

+0

Unsicher von der richtigen Vorgehensweise in htaccess (jemand anderes wird sicherlich antworten), aber Sie möchten alle zurück in Ihre index.html Wildcard, so dass das Front-End alle Routing verarbeiten kann. – SamHH

+1

Dies ist eine sehr verwirrte Frage. Ich bin mir nicht sicher, worüber du fragst? Ist es reagieren, PHP, Htaccess, was? Was genau willst du und was genau funktioniert nicht? Ich denke, das könnte eine [XY-Frage] sein (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Ihr * fragt nach Ihrem Lösungsversuch und nicht nach Ihrem eigentlichen Problem. * – Liam

+0

Ja Samhh, das ist richtig, ich wollte den Pfad auch beibehalten können ... –

Antwort

0

fand ich, was ich war nach:

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

Dieser Dank here

zu diesem Link ist nun das Dokument die Seite stoppt für das Unterverzeichnis Wurzel suchen, mit dem beigefügten auf der Website root umschreibt zurück Pfad

Verwandte Themen