Tengo una aplicación de reacción que es posible que desee ejecutar desde diferentes directorios, posiblemente en varios hosts.
https://myhost.com/relative/path/1/index.html
https://myhost.com/relative/ruta/2/index.html
https://myhost2.com/relative/path/1/index.html
Me doy cuenta de que cuando hago clic en un enlace de inicio, la URL siempre muestra
https://myhost.com/home en lugar de https://myhost.com/relative/path/1/home
¿Es este el comportamiento esperado?
<Link to={`${this.settings.getClientBaseUrl()}home`}>Home</Link>
<Route exact path={`${this.settings.getClientBaseUrl()}`} element={<HomePage parent={this.parent} />} />
Estoy buscando una forma definitiva o una explicación sobre cómo hacer que la URL se vea como
https://myhost.com/relative/path/1/home
en vez de
https://myhost.com/home
Me las arreglé para hacer esto.
let baseUrl = window.location.pathname; baseUrl = \`${baseUrl.split('/').slice(0, -1).join('/')}/\`; // get dir of filepath
Si coloca la salida de compilación en https://example.com/path/to/script baseUrl = '/path/to/script/';
<Route exact path={`${baseUrl}`} element={<HomePage props={props} />} /> <Route exact path={`${baseUrl}index.html`} element={<HomePage props={props} />} /> <Route exact path={`${baseUrl}home`} element={<HomePage props={props} />} />
<Link to={`${baseUrl}home`}>Home</Link>
# begin redirect to index.html RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.html [L] # end redirect to index.html